I suggest you to create a good benchmark. Iterating with creating an additional Iterator is an extremely common case with Java code, so I’m sure, that it’s optimized good enough. It may look like creating an object, calling its methods, etc, but JIT might just inline everything and in machine code it’ll be a simple loop.