extends HashSet E >" />
0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LinkedHashSet 和 LinkedHashMap定義

科技綠洲 ? 來(lái)源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-10 15:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

同 HashSet 與 HashMap 的關(guān)系一樣,本篇文章所介紹的 LinkedHashSet 和 LinkedHashMap 也是一致的。在 JDK 集合框架中,類(lèi)似 Set 集合通常都是由對(duì)應(yīng)的 Map 類(lèi)集合來(lái)實(shí)現(xiàn)的(TreeSet 和 TreeMap 同理),這里很重要的一個(gè)理論就是:Set 類(lèi)集合是不允許重復(fù)的,而 Map 類(lèi)集合的 key 也是不允許重復(fù)的,所以通常很容易就用 Map 類(lèi)集合實(shí)現(xiàn)了 Set 類(lèi)集合。

1、LinkedHashSet 定義

LinkedHashSet 是由 LinkedHashMap 實(shí)現(xiàn)的集合。元素有序且不能重復(fù)。

public class LinkedHashSet< E >
    extends HashSet< E >
    implements Set< E >, Cloneable, java.io.Serializable {

圖片

看上圖類(lèi)定義,LinkedHashSet 是由 HashSet 來(lái)實(shí)現(xiàn)的,其實(shí)底層是通過(guò) LinkedHashMap 來(lái)實(shí)現(xiàn)的。

2、構(gòu)造函數(shù)

在 LinkedHashSet 中,有如下幾個(gè)構(gòu)造方法:

①、指定初始容量和加載因子

public LinkedHashSet(int initialCapacity, float loadFactor) {
        super(initialCapacity, loadFactor, true);
    }

②、指定初始容量

public LinkedHashSet(int initialCapacity) {
        super(initialCapacity, .75f, true);
    }

③、默認(rèn)無(wú)參構(gòu)造函數(shù)

public LinkedHashSet() {
        super(16, .75f, true);
    }

④、構(gòu)造包含指定集合的元素

public LinkedHashSet(Collection< ? extends E > c) {
        super(Math.max(2*c.size(), 11), .75f, true);
        addAll(c);
    }

上面所有的構(gòu)造方法,都調(diào)用父類(lèi),也就是 HashSet 的 super(initialCapacity, loadFactor, true);

HashSet(int initialCapacity, float loadFactor, boolean dummy) {
         map = new LinkedHashMap<  >(initialCapacity, loadFactor);
     }

前面兩個(gè)參數(shù)分別設(shè)置HashMap 的初始容量和加載因子。dummy 可以忽略掉,這個(gè)參數(shù)只是為了區(qū)分 HashSet 別的構(gòu)造方法。

3、添加元素

public boolean add(E e) {
         return map.put(e, PRESENT)==null;
     }

通過(guò) map.put() 方法來(lái)添加元素,說(shuō)明了該方法如果新插入的key不存在,則返回null,如果新插入的key存在,則返回原key對(duì)應(yīng)的value值(注意新插入的value會(huì)覆蓋原value值)。

也就是說(shuō) add(E e) 方法,會(huì)將 e 作為 key,PRESENT 作為 value 插入到 map 集合中,如果 e 不存在,則插入成功返回 true;如果存在,則返回false。

4、刪除元素

public boolean remove(Object o) {
         return map.remove(o)==PRESENT;
     }

調(diào)用 HashMap 的remove(Object o) 方法,該方法會(huì)首先查找 map 集合中是否存在 o ,如果存在則刪除,并返回該值,如果不存在則返回 null。

也就是 remove(Object o) 方法,刪除成功返回 true,刪除的元素不存在會(huì)返回 false。

5、查找元素

public boolean contains(Object o) {
         return map.containsKey(o);
     }

調(diào)用 HashMap 的 containsKey(Object o) 方法,找到了返回 true,找不到返回 false。

6、遍歷元素

LinkedHashSet< String > hashSet = new LinkedHashSet<  >();
hashSet.add("A");
hashSet.add("B");
hashSet.add("C");
//1、增強(qiáng)for循環(huán)
for(String str : hashSet){
    System.out.println(str);
}
//2、迭代器
Iterator< String > iterator = hashSet.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
}

7、小結(jié)

好了,這就是JDK中java.util.LinkedHashSet 類(lèi)的介紹,記住有序且不能重復(fù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • MAP
    MAP
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    15512
  • SET
    SET
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    8181
  • key
    key
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    13085
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    iphone接口定義

    本文提供詳細(xì)的iphone接口定義,有iphone接口定義英文版和iphone接口定義中文介紹說(shuō)明。
    發(fā)表于 03-28 15:15 ?1.5w次閱讀

    USB接口定義

    USB接口定義 USB接口定義  更多盡在:USB產(chǎn)品網(wǎng)
    發(fā)表于 04-21 11:58 ?3.4w次閱讀

    VESA總線定義

    VESA總線定義 VESA 是 Video Electronics Standards Association 的縮寫(xiě),本頁(yè)列出的是擴(kuò)展部分的引腳定義,非擴(kuò)展部分請(qǐng)見(jiàn) ISA 總線的定義。
    發(fā)表于 11-30 12:49 ?1911次閱讀
    VESA總線<b class='flag-5'>定義</b>

    atx電源引腳定義 atx電源針腳定義 atx電源接口定義

    atx電源引腳定義 atx電源針腳定義 atx電源接口定義
    發(fā)表于 01-24 16:34 ?1.6w次閱讀
    atx電源引腳<b class='flag-5'>定義</b> atx電源針腳<b class='flag-5'>定義</b> atx電源接口<b class='flag-5'>定義</b>

    9針串口引腳定義 25針串口引腳定義

    9針串口引腳定義 25針串口引腳定義
    發(fā)表于 04-27 15:44 ?9823次閱讀

    rs422接口定義 rs232接口定義 rs485接口定義

    rs422接口定義 rs232接口定義 rs485接口定義 Pin 信 號(hào) 定 義  
    發(fā)表于 04-27 17:33 ?1.6w次閱讀

    pci引腳定義 pci 接口定義

    pci引腳定義 Pin
    發(fā)表于 04-27 18:06 ?7721次閱讀

    串口針腳定義

    串口針腳定義有9針和25針: 25針串口定義 9針串口接線
    發(fā)表于 04-29 13:27 ?8651次閱讀
    串口針腳<b class='flag-5'>定義</b>

    VGA和RGB接口的定義

    VGA和RGB接口的定義 1.VGA的定義
    發(fā)表于 05-03 23:13 ?5949次閱讀

    常用接口的定義

    常用接口的定義,常用接口的定義,常用接口的定義.
    發(fā)表于 04-29 17:57 ?20次下載

    SATA的接口定義及硬盤(pán)電源接口定義

    SATA接口的pin定義包括:信號(hào)電源和數(shù)據(jù)線接口定義
    發(fā)表于 06-16 18:21 ?23次下載

    對(duì)于宏定義與重復(fù)定義的問(wèn)題

    對(duì)于宏定義與重復(fù)定義的問(wèn)題
    發(fā)表于 11-29 18:21 ?1次下載
    對(duì)于宏<b class='flag-5'>定義</b>與重復(fù)<b class='flag-5'>定義</b>的問(wèn)題

    闡述系統(tǒng)中軟件定義和硬件定義

    從軟件到硬件,從硬件到軟件;硬件定義并驅(qū)動(dòng)軟件,軟件定義并驅(qū)動(dòng)硬件;軟硬件系統(tǒng)的發(fā)展,是個(gè)螺旋上升,不斷深化的過(guò)程。
    的頭像 發(fā)表于 09-06 09:51 ?3760次閱讀

    Map類(lèi)集合基本元素的實(shí)現(xiàn)演變

    。 1、LinkedHashMap 定義 LinkedHashMap 是基于 HashMap 實(shí)現(xiàn)的一種集合,具有 HashMap 集合上面所說(shuō)的所有特點(diǎn),除了 HashMap 無(wú)序的特點(diǎn)
    的頭像 發(fā)表于 10-10 16:14 ?652次閱讀
    Map類(lèi)集合基本元素的實(shí)現(xiàn)演變

    java的util包下有哪些類(lèi)

    地插入、刪除和訪問(wèn)元素。 HashSet:無(wú)序的集合,不允許重復(fù)元素。 LinkedHashSet:有序的集合,不允許重復(fù)元素。 TreeSet:有序的集合,根據(jù)元素的自然順序或指定的比較器進(jìn)行排序。 HashMap:無(wú)序的鍵值對(duì)映射,不允許重復(fù)鍵。 LinkedHashMap
    的頭像 發(fā)表于 11-22 15:04 ?1479次閱讀

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品