最近在優化代碼時遇到了這個問題: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 }
運作結果為:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yM4MzM2EDMzEjMtcjN2YjM2MzNxkDM4AzNxAjMtETM2cTO28CX4AzNxAjMvwVMxYzN5YzLcd2bsJ2Lc12bj5ycn9Gbi52YucTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)