最近在優化代碼時遇到了這個問題:Iterator與增強for循環到底哪個效率高?之前在學習的時候,好像記着老師說過遍歷集合(如list)時,使用iterator好像正規一些,因為是專用的,但是運行效率問題確實不曾考慮,今天做了一個實驗:對兩者進行了簡單的比較,得出的結論是:增強for循環運行效率更高一些。但是我不確定這是否會代表全部情況,這里僅僅記錄一下,做個參考,后期有新的認識再來補充,歡迎大家批評指正。
1 public static void main(String[] args) { 2 test(); 3 } 4 5 public static void test() { 6 7 List<Integer> list = new ArrayList<Integer>(); 8 int flag = 100000; 9 int i=0; 10 while(i<flag) { 11 list.add(i); 12 i++; 13 } 14 15 // iterator測試 16 long start = System.currentTimeMillis(); 17 Iterator<Integer> iterator = list.iterator(); 18 while(iterator.hasNext()) { 19 System.out.print(iterator.next()); 20 } 21 long end = System.currentTimeMillis(); 22 System.out.println("iterator本次執行耗費了"+(end-start)+"毫秒"); 23 24 // 增強for循環測試 25 long start2 = System.currentTimeMillis(); 26 for(Integer inte : list) { 27 System.out.print(inte); 28 } 29 long end2 = System.currentTimeMillis(); 30 System.out.println("for本次執行耗費了"+(end2-start2)+"毫秒"); 31 }
運行結果為: