1. 程式人生 > >java 中 for 、foreach 和 迭代器 的學習筆記

java 中 for 、foreach 和 迭代器 的學習筆記

開發十年,就只剩下這套架構體系了! >>>   

for  ,foreach 的區別如下:

1. 形式區別

對於for迴圈,我們採用:

for(int i=0;i<arr.size();i++){...}

對於foreach:

for(int i:arr){...}

對與迭代器:

Iterator it = arr.iterator();
while(it.hasNext()){ object o =it.next(); ...};

2. 條件差別

for需要知道陣列或者集合的大小,而且需要時有序的,不然無法遍歷;

foreach和iterator不需要知道陣列或者集合的大小,他們都是得到集合內的每一個元素然後進行處理;

3. 多型差別

for和foreach都需要知道自己的集合型別,甚至要知道自己集合內的元素型別,不能實現多型。這個使用的語法上都可以表示出來。

Iterator是一個介面類心,它不關心集合的類心和集合內的元素型別,因為它是通過hasnext和next來進行下一個元素的判斷和獲取,這一切都是在集合型別定義的時候就完成的事情。迭代器統一了對容器的訪問模式,這也是對介面解耦的最好表現。

4. 用法差別

for一般可以用於簡單的順序集合,並且可以預測集合的大小;

foreach可以遍歷任何集合或者陣列,但是使用者需要知道遍歷元素的型別。

iterator是最強大的,它可以隨之修改元素內部的元素。可以在遍歷的時候使用remove();  而且iterator不需要知道元素型別和元素大小,通過hasnext()判斷是否遍歷完所有元素。 而且在對範型的集合進行遍歷的時候,iterator是不二的選擇,就是因為不需要知道元素型別便可以遍歷。