Java 中的迭代器實現指南

已發表: 2020-06-11

在 Java 中,有一個實用程序用於從系列中生成連續元素,稱為java 迭代器。 由所有集合類實現,Java 中的這些迭代器實現返回一個對象,然後觸發接口。 由於 Java 集合框架由在可重用數據集上運行的類組合組成,因此通過此類迭代器接口返回的對象可以跨越集合中的所有元素。

在執行之前,您需要牢記 Java 迭代器的一些特定特徵:

  • Java 中的集合框架配備了 iterator () 函數,可以幫助執行 READ 和 REMOVE 命令。
  • 與其他迭代器不同,迭代方法使用 next() 函數在自動循環中移動元素。
  • 每個迭代器只能遍歷所有元素一次,一旦到達序列的末尾,就該獲取另一個迭代器了。

閱讀: Java 如此受開發人員歡迎的 6 大原因

目錄

在 Java代碼中執行迭代器實現

由於每個框架都帶有一個返回的對象,因此可以使用此類方法以下列方式訪問元素:

  • 調用 iterator() 方法。
  • 創建一個可以調用 boolean hasNext() 的循環,該循環返回一個布爾變量。 一旦變量具有實際值,它就允許迭代器遍歷集合。
  • 調用 E next() 函數以獲取集合中的下一個元素。
  • 默認的 void remove() 可用於刪除通過迭代器返回的最後一個元素的底層集合。
  • 默認的 void forEachRemaining() 函數幫助迭代器在每個元素上執行任何給定的函數,直到整個集合完成處理。

在 java 中的迭代器實現中使用 hasNext() 和 Next() 函數

正如我們已經知道的,next() 函數幫助迭代器一次遍歷所有集合元素; 因此,一旦迭代器到達集合的末尾,next() 就會引發異常。 這就是為什麼在 next() 之前使用 haveext() 函數可以確保迭代器具有與集合一致的下一個對象,以消除任何異常。

Object remove():在 object remove() 函數的幫助下,您可以刪除並返回最後一個被迭代器遍歷並由 next() 返回的對象。 如果對象自上次訪問後發生任何修改,則函數 IllegalStateException() 將生效。

這是函數如何發生的一個簡單示例:

ArrayList abc = new ArrayList();

迭代器 xyz = xyz.iterator();

xyz.next();

xyz.刪除;

xyz.remove();

xyz.next();

xyz.remove();

導入 java.util.*;

類迭代器Trial

{

公共靜態無效主要(字符串[] arg)

}

List trialList = new ArrayList();

String trialArray[] = {“Harry”, “Jack”, “Jacob”, “Maggie”, “George”};

for (int i=0; i<trialArray.length; i++)

{

trialList.add(trialArray[i]);

}

迭代器 xyz = trialList.iterator();

而 (xyz.hasNext())

{

System.out.println(xyz.next());

}}}

上述代碼生成的輸出為:

哈利

傑克

雅各布

劣質煤

喬治

在上面的示例中,為 ArrayList abc 創建了迭代器 xyz,該迭代器一旦刪除了第一個元素和相鄰的對象,就會執行快速簡單的迭代。

另請閱讀:初學者的 17 個有趣的 Java 項目想法和主題

Java中的自定義類迭代器實現

對於任何用戶定義的自定義類,您可以使用以下方法迭代元素:

  • 設置和定義自定義類。
  • 將集合類分配和定義給自定義類。
  • 在這個集合類中,需要以自定義類作為類型參數來實現可迭代接口。
  • 同一個集合類應該能夠執行一個iterator() 函數。
  • 一旦在 Custom 類中遵循這些說明,就可以為其元素運行迭代器對像或增強型 For Loop()。

Java迭代器實現的優缺點

  • 適用於任何 Collection 類
  • Collection API 的通用游標,具有安全的方法和操作

缺點:

  • 不支持 CREATE 和 UPDATE 操作
  • 迭代只發生在一個方向
  • ListIterator 和 Spliterator 是 Java 中更好的游標,允許並行迭代和批量數據迭代。

Java中的枚舉和迭代器實現:異同

  • 枚舉器和迭代器都是 java 游標,可用於在單個方向上一次一個地迭代集合類元素。
  • 兩個游標都支持 READ 方法。

不同點:

  • 枚舉是一個遺留接口,首先在 Java 1.0 中執行,並且僅限於 Legacy 集合類,與 Iterator 不同。
  • 枚舉器不是通用游標,因此具有棘手的函數名稱,僅限於執行 READ 函數。

另請閱讀:印度的 Java 開發人員薪水:適合新人和有經驗的人

結論

伙計們,這就是Java中的迭代器實現希望您現在知道如何以正確的方式開始迭代。

如果您有興趣了解有關全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發 PG 文憑,該文憑專為在職專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目,以及任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。

為未來的職業做準備

行業值得信賴的學習 - 行業認可的認證。
現在註冊@upGrad