I would like to compare the use of iterator, for statements, foreach to traverse LinkedList, who is fast. So I wrote the following code:
package mystudy;import java.util.*;p ublic class mystudy { private static final int size = 100000; private integer[] arr = new integer[size]; private abstractlist< Integer> abslist; public void initialize () { LinkedList<Integer> list = new LinkedList<Integer> (); for (int i = 0; i < size ; i ++) { arr[i] = i ; list.add (i); } absList = (abstractlist< integer>) List.sublist (0, list.size ()); &NBSP;&NBSP;&NBSP;&NBSP;}&NBSP;&NBSP;&NBSP;&NBSP;PUBLIC&NBSP;VOID&NBSP;METHOD0 () { integer tmp; for (int i = size - 1; i >= 0; i --) { tmp = arr[i]; &NBSP;&NBSP;&NBSP;}&NBSP;&NBSP;&NBSP;&NBSP;}&NBSP;&NBSP;&NBSP;&NBSP;PUBLIC&NBSP;VOID&NBSP;METHOD1 () { listiterator<integer> it = abslist.listiterator (SIZE); integer tmp; while (It.hasprevious ()) { Tmp = it.previous (); } } publiC&NBSP;VOID&NBSP;METHOD2 () { integer tmp; for (int i = size - 1; i >= 0; i --) { tmp = Abslist.get (i); } } &NBSP;PUBLIC&NBSP;VOID&NBSP;METHOD3 () { integer tmp; for (integer i : abslist) { tmp = i; } } public static void main (String[] args) { mystudy study = New mystudy (); &nbsP; study.initialize (); long start,expend0,expend1,expend2,expend3; start = System.currenttimemillis (); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;STUDY.METHOD0 (); expend0 = system.currenttimemillis () - start; start = system.currenttimemillis (); &NBSP;&NBSP;&NBSP;&NBSP;STUDY.METHOD1 (); expend1 = System.currenttimemillis () - start; start = system.currenttimemillis (); study.method2 (); expend2 = system.currenttimemillis () - start; &Nbsp; start = system.currenttimemillis (); Study.method3 (); expend3 = system.currenttimemillis () - start; system.out.println ("Expend0:" + expend0 + " expend1:" + expend1 + " expend2:" + expend2 + " expend3:" + expend3); } }
Results of the operation:
Expend0:1 Expend1:7 expend2:5548 Expend3:7
It is seen that traversing linkedlist with a for statement is the slowest.
LinkedList traversal speed in Java