java 迭代器Iterator

迭代器(Iterator)是一個對象,它的工做是遍歷並選擇序列中的對象,它提供了一種訪問一個容器(container)對象中的各個元素,而沒必要暴露該對象內部細節的方法。經過迭代器,開發人員不須要了解容器底層的結構,就能夠實現對容器的遍歷。java

因爲建立迭代器的代價小,所以迭代器一般被稱爲輕量級的容器。微信

Iterator接口也是Java集合框架的成員,但它與Collection系列、Map系列的集合不同:Collection和Map一系列集合主要用於存儲其它對象,而Iterator主要用於遍歷(迭代訪問)Collection集合中的元素。框架

Iterator接口裏定義了以下4個方法:spa

1)boolean hasNext():若是被迭代的集合元素尚未被遍歷完,則返回true。code

2)Object next():返回集合裏的下一個元素。對象

3)void remove():刪除集合裏上一次next方法返回的元素。blog

4)void forEachRemaining(Consumer action),這是Java8爲Iterator新增的默認方法,該方法可以使用Lambda表達式來遍歷集合元素。繼承

下面程序示範了經過Iterator接口來遍歷集合元素。接口

public class IteratorTest{   public static void main(String[] args){     List<String> strList = new ArrayList<>();     strList.add("111");     strList.add("222");     strList.add("333");     Iterator it = strList.iterator();     while(it.hasNext()){       String str = (String)it.next();       Sysye.out.println(str);       if(str.equals("222")){         it.remove();       }       //對str賦值,不會改變集合自己       str = "000";     }   } }

當使用Iterator迭代訪問Collection集合元素時,Collection集合裏的元素不能被改變,只有經過Iterator 的remove()方法刪除上一次next()方法返回的集合元素才能夠;不然將會引起java.util.ConcurrentModificationException異常。開發

 

歡迎關注微信公衆號【Java典籍】,收看更多Java技術乾貨!

  ▼微信掃一掃下圖↓↓↓二維碼關注

 

引伸:Iterator 與ListIterator 有何區別?Iterator 只能正向遍歷集合,適用於獲取移除元素。ListIterator 繼承自Iterator ,專門針對List,能夠從兩個方向來遍歷list,同時支持元素的修改。 
相關文章
相關標籤/搜索