當前位置:生活全書館 >

IT科技

> java iterator

java iterator

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

iterator java是什麼,讓我們一起了解一下?

iterator java就是提供一種方法對一個容器物件中的各個元素進行訪問,而又不暴露該物件容器的內部細節。

那麼iterator的由來是怎樣的?

Java集合框架的集合類,我們有時候稱之為容器。容器的種類有很多種,比如ArrayList、LinkedList、HashSet…,每種容器都有自己的特點,ArrayList底層維護的是一個數組;LinkedList是連結串列結構的;HashSet依賴的是雜湊表,每種容器都有自己特有的資料結構。

因為容器的內部結構不同,很多時候可能不知道該怎樣去遍歷一個容器中的元素。所以為了使對容器內元素的操作更為簡單,Java引入了迭代器模式!

把訪問邏輯從不同型別的集合類中抽取出來,從而避免向外部暴露集合的內部結構。

對於陣列我們使用的是下標來進行處理的:

1 int array[] = new int[3];    2 for (int i = 0; i < array.length; i++) {3     System.out.println(array[i]);4 }對ArrayList的處理1 List<String> list = new ArrayList<String>();2        for(int i = 0 ; i < list.size() ;  i++){3           String string = list.get(i);4 }

iterator java

因此對於這兩種方式,我們總是都知道它的內部結構,訪問程式碼和集合本身是緊密耦合的,但無法將訪問邏輯從集合類和客戶端程式碼中分離出來,該怎麼辦?

不同的集合會對應不同的遍歷方法,客戶端程式碼無法複用,在實際應用中如何將上面兩個集合整合是相當麻煩的,所以才有Iterator,它總是用同一種邏輯來遍歷集合,使得客戶端自身不需要來維護集合的內部結構,所有的內部狀態都由Iterator來維護。客戶端不用直接和集合進行打交道,而是控制Iterator向它傳送向前向後的指令,就可以遍歷集合。

一、java.util.Iterator

下面讓我們看看Java中的Iterator介面是如何實現的。

在Java中Iterator為一個介面,它只提供了迭代的基本規則。在JDK中它是這樣定義的:對Collection進行迭代的迭代器,迭代器取代了Java Collection Framework中的Enumeration。

迭代器與列舉有兩點不同:

1. 迭代器在迭代期間可以從集合中移除元素。

2. 方法名得到了改進,Enumeration的方法名稱都比較長。

其介面定義如下:

package java.util;public interface Iterator<E> {    boolean hasNext();//判斷是否存在下一個物件元素    E next();//獲取下一個元素    void remove();//移除元素}

二、Iterable

Java中還提供了一個Iterable介面,Iterable介面實現後的功能是‘返回’一個迭代器,我們常用的實現了該介面的子介面有:Collection、List、Set等。該介面的iterator()方法返回一個標準的Iterator實現,實現Iterable介面允許物件成為Foreach語句的目標,就可以通過foreach語句來遍歷你的底層序列。

Iterable介面包含一個能產生Iterator物件的方法,並且Iterable被foreach用來在序列中移動。因此如果建立了實現Iterable介面的類,都可以將它用於foreach中。

Iterable介面的具體實現:

Package java.lang;import java.util.Iterator;public interface Iterable {undefinedIterator iterator();}

標籤: iterator java
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/ynq6z1.html