Using an iterator or the enhanced for loop means a tiny extra loop-set-up cost (just a handful of variables in the iterator object) which is irrelevant if the loop’s going round more than a handful of times. Then each time round, it’ll be doing a couple of extra tests, which may be somewhat significant if the looped block’s got very little in it, like searching for an element then breaking out or something trivial like that.
In general I’d say use the one which reads best in the context of what the code’s doing at the time, usually the Java enhanced for loop if possible because it’s neatest, otherwise what BurntPizza said. Tune later if need be.
In particular I don’t like using a for (int x…) loop when x isn’t used for anything else except obtaining the next item. Apart from being less elegant it runs the risk of creating a problem later if the list is changed to a different type with inefficient random access.