1. Conceptual understanding
for loop: It is a general structure that supports iteration and is the most effective and flexible loop structure
Iterator: It is obtained through the iterator() method of the collection, so we say that it exists dependent on the collection
Foreach: By reading the source code We also find an Iterable interface. It contains an iterator() method that generates an Iterator object, and the Iterator object is used by foreach to move in the sequence. Can be used for any object that implements the Iterable interface.
2. Efficiency example
Comparison of efficiency in ArrayList:
List<Integer> integers = Lists.newArrayList(); for(int i=0;i<100000;i++){ integers.add(i); } long start1 = System.currentTimeMillis(); for(int count =0 ;count<10;count++){ for(int i=0;i<integers.size();i++){ int j=integers.get(i); } } System.out.println(String.format("for循环100次时间:%s ms",System.currentTimeMillis()-start1)); long start2 = System.currentTimeMillis(); for(int count =0 ;count<10;count++) { for (Integer i : integers) { int j = i; } } System.out.println(String.format("foreach循环100次时间:%s ms",System.currentTimeMillis()-start2)); long start3 = System.currentTimeMillis(); for(int count =0 ;count<10;count++) { Iterator<Integer> iterator = integers.iterator(); while(iterator.hasNext()){ int j=iterator.next(); } } System.out.println(String.format("迭代器循环100次时间:%s ms",System.currentTimeMillis()-start3));
Result:
for循环100次时间:15 ms foreach循环100次时间:25 ms 迭代器循环100次时间:20 ms
The efficiency of the three under ArrayList is almost the same , the for loop is optimal, because ArrayList is implemented through an array, and the time complexity of positioning the array through the index is O(1), and it can be located in one time, so the efficiency is very high.
Summary: The for loop facilitates access to sequentially stored records, while foreach and iterator facilitate access to linked storage.
The above is the detailed content of Comparison of the pros and cons of iterators and for loops in Java. For more information, please follow other related articles on the PHP Chinese website!