1. 程式人生 > >叠代器和增強for

叠代器和增強for

clas 過程 抽象方法 叠代器 方法 下標 foreach 統一 ray

增強for

內部原理其實是個Iterator叠代器,所以在遍歷的過程中,不能對集合中的元素進行增刪操作。

格式:

for(元素的數據類型 變量 : Collection集合or數組){

}

它用於遍歷Collection和數組。通常只進行遍歷元素,不要在遍歷的過程中對集合元素進行增刪操作。

* foreach:增強for循環,一般用於遍歷集合或者數組

* 格式:

* for(元素的類型 變量 : 集合或者數組對象) {

* 可以直接使用變量;

* }

註意:在增強for循環中不能修改集合,否則會出現並發修改異常。

foreach比叠代器遍歷集合的優勢在於代碼更加的簡潔,更不容易出錯,不用關心下標的起始值和終止值。

叠代器

1. Iterator專門用於對集合進行遍歷使用的

* 2. 哪些集合可以使用叠代器進行遍歷?

* Collection: 可以

* List: 可以

* Set: 可以

* Map: 不可以* Map-->Set

//使用叠代器遍歷ArrayList集合
    Iterator<String> listIt = list.iterator();
21         while(listIt.hasNext()){
22             System.out.println(listIt.hasNext());
23         }
24         //使用叠代器遍歷Set集合
25         Iterator<String> setIt = set.iterator();
26         while(setIt.hasNext()){
27             System.out.println(listIt.hasNext());
28         }
29         //使用叠代器遍歷LinkedList集合
30         Iterator<String> linkIt = linkList.iterator();
31         while(linkIt.hasNext()){
32             System.out.println(listIt.hasNext());
33         }
void remove();//移除元素 }

1. Iterator專門用於對集合進行遍歷使用的

* 2. 哪些集合可以使用叠代器進行遍歷?

* Collection: 可以

* List: 可以

* Set: 可以

* Map: 不可以* Map-->Set

* 3. Iterator , 是一個接口, 調用itertator()可以得到該接口類型的對象

* 在集合定義中, 有實現了Iterator接口的內部類的集合, 可以使用叠代器

* 實現了Iterable接口的集合可以使用叠代器進行遍歷

*

* 4. Iterator: 接口, 叠代器, 用於對集合(Collection)進行遍歷

* Iterable: 接口, 有一個抽象方法叫iterator(), 返回結果是一個Iterator對象(前提是在集合中定義了內部類, 該類實現了Iterator接口)

* iterator(): 源頭是Iterable接口, 返回一個叠代器對象

*

* 5. foreach, 增強for循環, jdk1.5之後可以使用

* foreach循環底層使用了叠代器的方式

*

* 6. foreach和叠代器Iterator的區別

* foreach可以遍歷數組, 叠代器不能遍歷數組;

*

* 7. 叠代器中的方法

* hasNext(): 用於判斷叠代器中是否還有下一個元素, 有返回true, 沒有返回false

* next(): 用於獲取下一個元素

* remove(): 刪除元素

* 前提是必須先調用next方法, 而且remove方法只能在next方法後被調用一次, 否則, 拋出異常: IllegalStateException

* 統一個叠代器只能被使用一次, 使用一次之後, 指針已經指向末尾了, 再調用hasNext方法時, 返回false

叠代器和增強for