叠代器和增強for
增強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