Java遍歷Set集合詳解

一、Set集合簡介

Set是Java集合框架下的一個集合接口,用於存儲不可重複的元素,即每個元素都是唯一的。Set常用的實現類有HashSet、LinkedHashSet和TreeSet。

二、遍歷Set集合的方法

1. 迭代器遍歷

迭代器是一種用於訪問集合元素的接口,通過迭代器可以按某種順序依次訪問集合中的每個元素。

Set<String> set = new HashSet<>();
set.add("apple");
set.add("orange");
set.add("banana");

Iterator<String> it = set.iterator();
while(it.hasNext()) {
    String str = it.next();
    System.out.println(str);
}

代碼解釋:

首先創建一個HashSet集合,然後向集合中添加三個元素。接着使用iterator()方法獲取集合的迭代器對象,使用while循環和hasNext()方法判斷是否還有下一個元素,如果存在則使用next()方法獲取下一個元素。

2. 增強的for循環遍歷

Java SE5及以上版本提供了一種方便的方式遍歷集合,即增強的for循環。增強的for循環可以按照集合元素的迭代順序依次訪問每個元素。

Set<String> set = new HashSet<>();
set.add("apple");
set.add("orange");
set.add("banana");

for(String str : set) {
    System.out.println(str);
}

代碼解釋:

與前面的例子相同,首先創建一個HashSet集合併向集合中添加三個元素。接着使用增強的for循環依次遍歷集合中的元素,將元素賦值給str變量,然後輸出。

3. Lambda表達式遍歷

Java 8引入的Lambda表達式可以使用更簡單的方式遍歷集合,並且還支持並行處理。

Set<String> set = new HashSet<>();
set.add("apple");
set.add("orange");
set.add("banana");

set.forEach(str -> System.out.println(str));

代碼解釋:

首先創建一個HashSet集合併向集合中添加三個元素。接着使用forEach()方法遍歷集合中的元素,Lambda表達式中的str即是集合中的元素,然後輸出。

三、Set集合元素排序

1. HashSet集合不排序

HashSet不保證元素的順序,元素的位置可能隨時被修改。如果需要對元素排序,可以使用TreeSet或LinkedHashSet。

Set<String> set = new HashSet<>();
set.add("apple");
set.add("orange");
set.add("banana");

for(String str : set) {
    System.out.println(str);
}

代碼解釋:

同樣先創建一個HashSet集合併向集合中添加三個元素。使用增強的for循環遍歷集合輸出元素,由此可以看出HashSet集合是不排序的。

2. TreeSet集合排序

TreeSet集合可以按照元素的自然排序(從小到大)或者指定的Comparator排序。

Set<String> set = new TreeSet<>();
set.add("apple");
set.add("orange");
set.add("banana");

for(String str : set) {
    System.out.println(str);
}

代碼解釋:

同樣先創建一個TreeSet集合併向集合中添加三個元素。使用增強的for循環遍歷集合輸出元素,由此可以看出TreeSet集合是按照元素的自然排序進行排序的。

3. LinkedHashSet集合插入順序排序

LinkedHashSet集合可以按照元素被插入的順序進行排序,插入的新元素會被放在集合中最後一個元素的後面。

Set<String> set = new LinkedHashSet<>();
set.add("apple");
set.add("orange");
set.add("banana");

for(String str : set) {
    System.out.println(str);
}

代碼解釋:

同樣先創建一個LinkedHashSet集合併向集合中添加三個元素。使用增強的for循環遍歷集合輸出元素,可以發現集合中的元素順序與插入順序一致。

四、Set集合的並集、交集和差集操作

1. 並集操作

Set集合的並集操作可以將兩個集合中的所有不同元素合併到一個新的集合中。可以使用addAll()方法實現。

Set<String> set1 = new HashSet<>();
set1.add("apple");
set1.add("orange");
set1.add("banana");

Set<String> set2 = new HashSet<>();
set2.add("pear");
set2.add("banana");
set2.add("peach");

Set<String> unionSet = new HashSet<>(set1);
unionSet.addAll(set2);

for(String str : unionSet) {
    System.out.println(str);
}

代碼解釋:

先創建兩個HashSet集合set1和set2,並向集合中添加元素。然後通過set1創建一個新的HashSet集合unionSet,並使用addAll()方法將set2中的所有元素加入到unionSet中,這樣就得到了兩個集合的並集。使用增強的for循環遍歷unionSet輸出元素。

2. 交集操作

Set集合的交集操作可以獲取兩個集合中的共同元素。可以使用retainAll()方法實現。

Set<String> set1 = new HashSet<>();
set1.add("apple");
set1.add("orange");
set1.add("banana");

Set<String> set2 = new HashSet<>();
set2.add("pear");
set2.add("banana");
set2.add("peach");

Set<String> intersectionSet = new HashSet<>(set1);
intersectionSet.retainAll(set2);

for(String str : intersectionSet) {
    System.out.println(str);
}

代碼解釋:

先創建兩個HashSet集合set1和set2,並向集合中添加元素。然後通過set1創建一個新的HashSet集合intersectionSet,並使用retainAll()方法獲取set1和set2中共同的元素,這樣就得到了兩個集合的交集。使用增強的for循環遍歷intersectionSet輸出元素。

3. 差集操作

Set集合的差集操作可以獲取在集合A中出現但是不在集合B中出現的元素。可以使用removeAll()方法實現。

Set<String> set1 = new HashSet<>();
set1.add("apple");
set1.add("orange");
set1.add("banana");

Set<String> set2 = new HashSet<>();
set2.add("pear");
set2.add("banana");
set2.add("peach");

Set<String> differenceSet = new HashSet<>(set1);
differenceSet.removeAll(set2);

for(String str : differenceSet) {
    System.out.println(str);
}

代碼解釋:

先創建兩個HashSet集合set1和set2,並向集合中添加元素。然後通過set1創建一個新的HashSet集合differenceSet,並使用removeAll()方法獲取在set1中出現但是不在set2中出現的元素,這樣就得到了set1和set2的差集。使用增強的for循環遍歷differenceSet輸出元素。

原創文章,作者:TCGAW,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/343224.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TCGAW的頭像TCGAW
上一篇 2025-02-11 14:14
下一篇 2025-02-11 14:16

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Python遍歷集合中的元素

    本文將從多個方面詳細闡述Python遍歷集合中的元素方法。 一、for循環遍歷集合 Python中,使用for循環可以遍歷集合中的每個元素,代碼如下: my_set = {1, 2…

    編程 2025-04-29

發表回復

登錄後才能評論