considering this example:
public static void main(final String[] args) {
final List myList = Arrays.asList(\"A\", \"B\", \"C\", \"D\");
Almost certainly what you are seeing here is a difference in HotSpot inlining. With a simpler loop it is more likely to inline, and therefore get rid of all the redundant rubbish. It might do the same inlining, but do it earlier on or with less effort. Generally with Java microbenchmarks you should run the code multiple times, from which you can work out start up times, average times and deviations.