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

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

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

一、前言

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

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

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

二、Set 的核心特點(diǎn)回顧

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

三、Set 常用方法總覽

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

方法返回值說明
add(E e)boolean添加元素
remove(Object o)boolean刪除指定元素
contains(Object o)boolean判斷是否存在
size()int獲取元素?cái)?shù)量
isEmpty()boolean判斷是否為空
clear()void清空集合
iterator()Iterator返回迭代器
addAll(Collection c)boolean合并集合
removeAll(Collection c)boolean刪除多個(gè)元素
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()—— 獲取元素?cái)?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)—— 刪除多個(gè)元素

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é)(??迹?/h2>

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 使用注意事項(xiàng)(易踩坑)

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

? 2. 遍歷過程中不能使用普通 for(因?yàn)闊o索引)
只能:

  • for-each
  • iterator
  • stream

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

? LinkedHashSet
如果需要排序:

? TreeSet

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

  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生成和校驗(yàn)的實(shí)例代碼

    java token生成和校驗(yàn)的實(shí)例代碼

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

    Spring session整合到Redis過程解析

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

    java大文件上傳處理方法實(shí)例代碼

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

长海县| 宿松县| 南木林县| 延吉市| 交城县| 江达县| 江西省| 金川县| 腾冲县| 四川省| 广安市| 枝江市| 涞源县| 柘城县| 石城县| 建平县| 巴塘县| 军事| 安岳县| 武清区| 鹿泉市| 尼勒克县| 伊宁市| 德令哈市| 红原县| 明星| 咸丰县| 舞阳县| 哈巴河县| 敦化市| 南安市| 钦州市| 洞头县| 渭南市| 新干县| 南雄市| 井陉县| 玉屏| 饶阳县| 永善县| 新乡市|