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

for  ,foreach 的區別以下:數組

1. 形式區別接口

對於for循環,咱們採用:rem

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

對於foreach:it

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

對與迭代器:for循環

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

2. 條件差異容器

for須要知道數組或者集合的大小,並且須要時有序的,否則沒法遍歷;object

foreach和iterator不須要知道數組或者集合的大小,他們都是獲得集合內的每個元素而後進行處理;foreach

3. 多態差異循環

for和foreach都須要知道本身的集合類型,甚至要知道本身集合內的元素類型,不能實現多態。這個使用的語法上均可以表示出來。遍歷

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

4. 用法差異

for通常能夠用於簡單的順序集合,而且能夠預測集合的大小;

foreach能夠遍歷任何集合或者數組,可是使用者須要知道遍歷元素的類型。

iterator是最強大的,它能夠隨之修改元素內部的元素。能夠在遍歷的時候使用remove();  並且iterator不須要知道元素類型和元素大小,經過hasnext()判斷是否遍歷完全部元素。 並且在對範型的集合進行遍歷的時候,iterator是不二的選擇,就是由於不須要知道元素類型即可以遍歷。

相關文章
相關標籤/搜索