最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Set 中的常用方法示例總結(jié)

 更新時間:2025年12月08日 09:19:43   作者:Geoking.  
Set是Java集合框架(Collection Framework)中最常用的接口之一,具有元素唯一、不允許重復(fù) 的特性,這篇文章將全面總結(jié)Java Set的常用方法并通過示例進(jìn)行講解,主要用于日常查詢使用,感興趣的朋友跟隨小編一起看看吧

一、前言

Set 是 Java 集合框架(Collection Framework)中最常用的接口之一,具有 元素唯一、不允許重復(fù) 的特性。

無論你用 HashSet、LinkedHashSet、TreeSet,它們都實現(xiàn)了 Set 接口,因此擁有大量共同的方法。

這篇文章將全面總結(jié) Java Set 的常用方法并通過示例進(jìn)行講解,主要用于日常查詢使用。

二、Set 的核心特點回顧

  • 不允許重復(fù)元素
  • 無序(LinkedHashSet 有序,TreeSet 有序但基于排序)
  • 無索引,不支持下標(biāo)訪問
  • 判斷重復(fù)依賴:
    hashCode() + equals()(TreeSet 使用 compareTo/Comparator)

三、Set 常用方法總覽

以下方法來自 Set 的父接口 Collection,因此所有 Set 實現(xiàn)類都具備這些操作:

方法返回值說明
add(E e)boolean添加元素
remove(Object o)boolean刪除指定元素
contains(Object o)boolean判斷是否存在
size()int獲取元素數(shù)量
isEmpty()boolean判斷是否為空
clear()void清空集合
iterator()Iterator返回迭代器
addAll(Collection c)boolean合并集合
removeAll(Collection c)boolean刪除多個元素
retainAll(Collection c)boolean求交集
toArray()Object[]轉(zhuǎn)換為數(shù)組
forEach()void遍歷(Java 8+)

接下來我們逐一講解。

四、Set 常用方法詳解

1.add(E e)—— 添加元素

Set<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("Java"); // 重復(fù),添加失敗
System.out.println(set);

返回值:

  • true:添加成功
  • false:元素已存在(Set 不允許重復(fù))

2.remove(Object o)—— 刪除元素

set.remove("Java");
System.out.println(set);

3.contains(Object o)—— 判斷元素是否存在

boolean exists = set.contains("Java");
System.out.println(exists);

最常用于過濾、查重等場景。

4.size()—— 獲取元素數(shù)量

int count = set.size();
System.out.println(count);

5.isEmpty()—— 判斷集合是否為空

if (set.isEmpty()) {
    System.out.println("空集合");
}

6.clear()—— 清空集合

set.clear();

7.iterator()—— 迭代器遍歷

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

Set 無索引,因此迭代器非常重要。

8.forEach()(Java 8)

更簡潔的遍歷方式:

set.forEach(System.out::println);

9.addAll(Collection c)—— 合并集合

Set<Integer> a = new HashSet<>(List.of(1, 2));
Set<Integer> b = new HashSet<>(List.of(2, 3));
a.addAll(b);
System.out.println(a);

效果類似數(shù)學(xué)中的 并集。

10.removeAll(Collection c)—— 刪除多個元素

a.removeAll(List.of(2));
System.out.println(a);

效果類似數(shù)學(xué)中的 差集。

11.retainAll(Collection c)—— 求交集

保留與目標(biāo)集合相同的元素。

Set<Integer> a = new HashSet<>(List.of(1, 2, 3));
Set<Integer> b = new HashSet<>(List.of(2, 3, 4));
a.retainAll(b);
System.out.println(a); // [2, 3]

12.toArray()—— 轉(zhuǎn)換為數(shù)組

Object[] arr = set.toArray();

如果你需要指定類型:

String[] arr = set.toArray(new String[0]);

五、Set 常用操作總結(jié)(常考)

1. 去重操作

Set<Integer> set = new HashSet<>(list);

2. 判斷是否包含某元素

if (set.contains(x))

3. 交集、并集、差集

// 并集
a.addAll(b);
// 交集
a.retainAll(b);
// 差集
a.removeAll(b);

4. 遍歷(推薦方式)

set.forEach(System.out::println);

六、Set 使用注意事項(易踩坑)

? 1. 添加自定義對象時必須重寫 equals()hashCode()
否則 Set 無法正確判斷重復(fù)。

? 2. 遍歷過程中不能使用普通 for(因為無索引)
只能:

  • for-each
  • iterator
  • stream

? 3. HashSet 不保證順序
如果需要順序:

? LinkedHashSet
如果需要排序:

? TreeSet

七、三大 Set 類的額外方法(補充)

  1. TreeSet 擁有 first()、last() 方法
TreeSet<Integer> ts = new TreeSet<>();
ts.add(3);
ts.add(1);
ts.add(2);
System.out.println(ts.first()); // 1
System.out.println(ts.last());  // 3
  1. TreeSet 支持子集操作
ts.headSet(2); // 小于 2 的元素
ts.tailSet(2); // 大于等于 2 的元素
ts.subSet(1, 3); // [1,3)

參考資料

Java Set 接口 - Java教程

Java官方文檔

到此這篇關(guān)于Java Set 中的常用方法示例總結(jié)的文章就介紹到這了,更多相關(guān)java set常用方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于JAVA中stream流的基礎(chǔ)處理(獲取對象字段和對象批量處理等)

    關(guān)于JAVA中stream流的基礎(chǔ)處理(獲取對象字段和對象批量處理等)

    這篇文章主要介紹了關(guān)于JAVA中stream流的基礎(chǔ)處理,包含獲取對象字段、按字段排序、按字段去重、對象批量處理、指定字段轉(zhuǎn)數(shù)組等內(nèi)容,需要的朋友可以參考下
    2023-03-03
  • java token生成和校驗的實例代碼

    java token生成和校驗的實例代碼

    這篇文章主要介紹了java token生成和校驗的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Spring session整合到Redis過程解析

    Spring session整合到Redis過程解析

    這篇文章主要介紹了Spring session整合到Redis過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • java大文件上傳處理方法實例代碼

    java大文件上傳處理方法實例代碼

    在Java中實現(xiàn)大文件上傳功能,確實需要考慮到文件大小可能超出內(nèi)存限制、網(wǎng)絡(luò)傳輸穩(wěn)定性等因素,這篇文章主要介紹了java大文件上傳處理方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-09-09
  • Springboot+Spring Security實現(xiàn)前后端分離登錄認(rèn)證及權(quán)限控制的示例代碼

    Springboot+Spring Security實現(xiàn)前后端分離登錄認(rèn)證及權(quán)限控制的示例代碼

    本文主要介紹了Springboot+Spring Security實現(xiàn)前后端分離登錄認(rèn)證及權(quán)限控制的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 使用Java橋接模式打破繼承束縛優(yōu)雅實現(xiàn)多維度變化

    使用Java橋接模式打破繼承束縛優(yōu)雅實現(xiàn)多維度變化

    這篇文章主要為大家介紹了使用Java橋接模式打破繼承束縛,優(yōu)雅實現(xiàn)多維度變化,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Flink狀態(tài)和容錯源碼解析

    Flink狀態(tài)和容錯源碼解析

    這篇文章主要為大家介紹了Flink狀態(tài)和容錯源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Java Netty實現(xiàn)心跳機制過程解析

    Java Netty實現(xiàn)心跳機制過程解析

    這篇文章主要介紹了Java Netty實現(xiàn)心跳機制過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Java實現(xiàn)JWT登錄認(rèn)證的示例代碼

    Java實現(xiàn)JWT登錄認(rèn)證的示例代碼

    Java中我們可以使用諸如JJWT這樣的庫來生成和驗證JWT,本文主要介紹了Java實現(xiàn)JWT登錄認(rèn)證的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • 十五道tomcat面試題,為數(shù)不多的機會!

    十五道tomcat面試題,為數(shù)不多的機會!

    這篇文章主要介紹了十五道tomcat面試題,Tomcat的本質(zhì)是一個Servlet容器。一個Servlet能做的事情是:處理請求資源,并為客戶端填充response對象,需要的朋友可以參考下
    2021-08-08

最新評論

大田县| 合阳县| 额尔古纳市| 娄烦县| 二连浩特市| 邓州市| 新蔡县| 响水县| 霍山县| 友谊县| 营口市| 台南县| 虎林市| 平果县| 邯郸县| 滨海县| 改则县| 资中县| 温宿县| 石柱| 苍南县| 当涂县| 阜新市| 英超| 潼关县| 丰镇市| 博野县| 体育| 荥经县| 沈阳市| 甘德县| 邢台市| 定南县| 西安市| 松滋市| 报价| 英吉沙县| 丹寨县| 闸北区| 天峻县| 龙海市|