1. 程式人生 > 其它 >集合元素的遍歷操作,使用迭代器Iterator介面

集合元素的遍歷操作,使用迭代器Iterator介面

1.內部的方法:hasNext() 和 next()

推薦的方式:

//hasNext():判斷是否還有下一個元素
while(iterator.hasNext()){
//next():①指標下移 ②將下移以後集合位置上的元素返回
System.out.println(iterator.next());
}
2.集合物件每次呼叫iterator()方法都得到一個全新的迭代器物件,預設遊標都在集合的第一個元素之前。

注意兩種錯誤方式:

//錯誤方式一:
Iterator iterator = coll.iterator();
while((iterator.next()) != null){
System.out.println(iterator.next());
}
解析:while中的iterator.next()已經返回來集合中第一個數,接著輸出語句中的iterator.next()列印了集合中的第二個元素。然後又回到while中的iterator.next(),如此往復,知道遍歷完畢。列印的結果都是隔一個元素列印,並且最後會報錯,越界。

//錯誤方式二:
//集合物件每次呼叫iterator()方法都得到一個全新的迭代器物件,預設遊標都在集合的第一個元素之前。
while (coll.iterator().hasNext()){
System.out.println(coll.iterator().next());
}
解析:每次呼叫iterator()方法都得到一個全新的迭代器物件,每次都是列印集合第一個元素,並且是死迴圈。

3.內部定義了remove(),可以在遍歷的時候,刪除集合中的元素。此方法不同於集合直接呼叫remove()

jdk 5.0 新增了foreach迴圈,用於遍歷集合、陣列
public void test1(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry",20));
coll.add(new String("Tom"));
coll.add(false);

//for(集合元素的型別 區域性變數 : 集合物件)
//內部仍然呼叫了迭代器。
for(Object obj : coll){
System.out.println(obj);
}
}