如何在 Java 中迭代 HashSet?


Java 的 HashSet 類在內部使用雜湊表來實現 Set 介面,它使用 HashMap 例項。由於雜湊集中元素的迭代順序並不總是保證的,因此該類不保證元素的順序會隨著時間推移而保持不變。

此類可以包含空元素。雜湊函式為基本操作(如新增、刪除、包含和大小)提供高效的效能,前提是它能有效地將元素分佈到各個桶中。

HashSet 實現 Set 介面,並擴充套件 AbstractSet。它使用雜湊技術建立集合,並將資料儲存在雜湊表中。雜湊是指從鍵中的資料生成唯一值的流程,該唯一值稱為鍵的雜湊碼。

使用的方法

以下三種方法之一可以用來迭代 HashSet:

  • 使用迭代器

  • 不要使用迭代器,而是使用 for 迴圈。

  • 使用 for-each 迴圈

方法 1:使用迭代器

在此方法中,我們使用迭代器來迭代 HashSet。首先,我們使用 Java 中的 iterator() 方法建立一個迭代器,該方法專門為 HashSet 設計。

語法

Iterator<Integer> it = set.iterator();

接下來,我們使用 Java 的 hasNext() 和 next() 方法遍歷 HashSet。next() 方法允許我們檢索儲存在 HashSet 中的資料,而 hasNext() 方法確定 HashSet 是否包含任何其他元素。

請注意,此方法可用於迭代和操作 HashSet 的元素。

set.add()

以下程式碼使用 HashSet 儲存字串集合。然後,它使用迭代器遍歷 HashSet 並列印每個字串值。

演算法

  • 步驟 1 - 建立一個名為 set 的 HashSet 物件。

  • 步驟 2 - 將字串“Java”、“PHP”、“Ruby”和“Python”新增到 set 物件中。

  • 步驟 3 - 為 set 物件建立一個名為 itr 的 Iterator 物件。

  • 步驟 4 - 在迭代 itr 物件時,使用 while 迴圈列印每個元素。

示例

import java.util.*;  
public class HashSetIteratorInstance {  
   public static void main(String[] args) {  
      HashSet<String> set=new HashSet<String>();    
      set.add("Java");    
      set.add("PHP");    
      set.add("Ruby");    
      set.add("Python");   
      
      //Traversing elements    
      Iterator<String> itr=set.iterator();    
      while(itr.hasNext()){    
         System.out.println(itr.next());    
      }    
   }  
}

輸出

Java
PHP
Ruby
Python

方法 2:使用 for 迴圈

要使用改進的 for 迴圈遍歷 Set,無需採取任何特殊步驟;您只需按迴圈構造的指示使用 Set 即可。

for()

該程式碼建立一個 HashSet 物件並向其提供字串。然後,它使用 for 迴圈遍歷 HashSet 物件並列印每個元素。

演算法

  • 步驟 1 - 建立“TLP”類。

  • 步驟 2 - 建立一個名為 set 的 HashSet 物件。

  • 步驟 3 - 將字串“Welcome”、“Tutorialspoint”、“CSE”、“Students”、“for”和“Students”新增到 set 物件中。

  • 步驟 4 - 列印訊息“使用 for 迴圈迭代 HashSet:”。

  • 步驟 5 - 使用 for 迴圈遍歷 set 物件並列印每個元素。

示例

// Java program to iterate the HashSet with the help of for loop
  
import java.util.*;
  
public class TLP {
   public static void main(String[] args){
      HashSet<String> set = new HashSet<>();

      // Addition of data to HashSet
      set.add("Welcome");
      set.add("Tutorialspoint");
      set.add("CSE");
      set.add("Students");
      set.add("for");
      set.add("Students");

      System.out.println("Iterate HashSet with the help of for loop : ");
      for (String ele : set) {
         System.out.print(ele + " ");
      }
   }
}

輸出

Iterate HashSet using for loop : 
CSE Students for Welcome Tutorialspoint

方法 3:使用 for each 迴圈

僅 Java 8 及更高版本支援此功能。由於 Set 實現了 Iterable 介面,因此您可以使用其 forEach() 函式來迭代 Set。

forEach()

該程式碼建立了一個 HashSet,向其中添加了多個程式語言名稱,然後使用 for-each 迴圈列印 HashSet 中的每個元素。

演算法

  • 步驟 1 - 匯入 java.util 包。

  • 步驟 2 - 建立一個 HashSet 物件 -“hashset”。

  • 步驟 3 - 現在,您必須將以下字串新增到 hashset 物件中:“Java”、“Python”、“C sharp”、“PHP”和“Ruby”。

  • 步驟 4 - 列印以下訊息:“HashSet 包含:”。

  • 步驟 5 - 使用 for 迴圈遍歷 hashset 物件並列印每個字串。

示例

import java.util.*;

public class HashSetIteratorInstance {
   public static void main(String args[]) {

      // Declare a HashSet
      HashSet<String> hashset = new HashSet<String>();
      
      // Add elements to HashSet
      hashset.add("Java");
      hashset.add("Python");
      hashset.add("C sharp");
      hashset.add("PHP");
      hashset.add("Ruby");

      System.out.println("HashSet consists of :");
      
      // Using for each loop
      for(String str : hashset){
         System.out.println(str);
      }
   }
}

輸出

HashSet consists of :
Java
PHP
C sharp
Ruby
Python

結論

我們討論了三種在 Java 中迭代 HashSet 的方法:使用迭代器、for 迴圈或 for-each 迴圈。迭代順序沒有保證,但所有三種方法都有效。

要在 Java 中迭代 HashSet,您可以使用迭代器,它是一個獨特的物件,可幫助您逐個訪問集合的元素。

您還可以使用 for 迴圈迭代 HashSet。但是,它可能不如使用迭代器高效。

最後,您可以使用 for-each 迴圈迭代 HashSet。

更新於: 2023-10-18

2K+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告