There are several ways of doing this. More than your two, anyway. But lets just focus on those two and why either is probably okay in the grand scheme.
It's always good practice to be efficient. It's worth writing a complicated drawing method if it saves a ton of memory. The fact is that unless you've done something really weird in your code, that drawing method should be relatively straight forward. You can probably do it with a double- or triple- for loop and just make sure you're drawing things in the correct order. I'm envisioning this being a few for loops with no more than a half dozen draw commands in them. If you think you need something more complex than that, ask yourself why.
Realistically, you don't necessarily go with "good practice". More realistic practice is to do whatever you can do the easiest/fastest. Go with that unless it actually causes problems somewhere. Java is admittedly slow compared to native applications because it has to go through the JVM. If using that much memory causes perceptible lag, then try to find out why. You might even be able to speed things up with a little bit of parallel. Point is, Java should handle that many objects just fine. By far, the slowest part of the operation is the io. Drawing takes forever compared to the internal stuff it's doing.
Take the efficient path if you have the time and patience. That more realistic path exists because in the real world of programming, you're usually under a time constraint. Either way, just try to be simple and straight forward. If you can't be "simple", then be explicit. If the compiler can figure out what you want, it might be able to optimize it enough to handle efficiency problems. I'd be happy to give advice on either path (or to devise an alternative) if you want or end up having problems.