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

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

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

LinkedHashSet 和 LinkedHashMap定義

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-10 15:10 ? 次閱讀

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

1、LinkedHashSet 定義

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

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

圖片

看上圖類定義,LinkedHashSet 是由 HashSet 來實現(xiàn)的,其實底層是通過 LinkedHashMap 來實現(xiàn)的。

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

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

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

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

②、指定初始容量

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

③、默認(rèn)無參構(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)用父類,也就是 HashSet 的 super(initialCapacity, loadFactor, true);

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

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

3、添加元素

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

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

也就是說 add(E e) 方法,會將 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) 方法,該方法會首先查找 map 集合中是否存在 o ,如果存在則刪除,并返回該值,如果不存在則返回 null。

也就是 remove(Object o) 方法,刪除成功返回 true,刪除的元素不存在會返回 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 類的介紹,記住有序且不能重復(fù)。

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

    關(guān)注

    0

    文章

    48

    瀏覽量

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

    關(guān)注

    0

    文章

    17

    瀏覽量

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

    關(guān)注

    0

    文章

    47

    瀏覽量

    12789
收藏 人收藏

    評論

    相關(guān)推薦

    iphone接口定義

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

    USB接口定義

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

    VESA總線定義

    VESA總線定義 VESA 是 Video Electronics Standards Association 的縮寫,本頁列出的是擴(kuò)展部分的引腳定義,非擴(kuò)展部分請見 ISA 總線的定義。
    發(fā)表于 11-30 12:49 ?1749次閱讀
    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 ?9332次閱讀

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

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

    pci引腳定義 pci 接口定義

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

    串口針腳定義

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

    VGA和RGB接口的定義

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

    常用接口的定義

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

    SATA的接口定義及硬盤電源接口定義

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

    對于宏定義與重復(fù)定義的問題

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

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

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

    Map類集合基本元素的實現(xiàn)演變

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

    java的util包下有哪些類

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