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

Java的HashSet源碼詳解

 更新時間:2023年09月05日 10:36:34   作者:Fly_Fly_Zhang  
這篇文章主要介紹了Java的HashSet源碼詳解,HashSet底層封裝的是HashMap,所以元素添加會放到HashMap的key中,value值使用new Object對象作為value,所以HashSet和HashMap的所具有的特點是類似的,需要的朋友可以參考下

HashSet

特點:

底層數(shù)據(jù)結(jié)構(gòu):HashSet底層封裝的是HashMap,所以元素添加會放到HashMap的key中,value值使用new Object對象作為value;

所以HashSet和HashMap的所具有的特點是類似的;

  •  數(shù)據(jù)不能重復(fù);
  •  可以存儲null值;
  •  數(shù)據(jù)不能保證插入有序;

默認(rèn)值:與HashMap相同;

基本屬性

   private transient HashMap<E,Object> map;//HashMap集合
    private static final Object PRESENT = new Object();//調(diào)用HashMap方法,裝入的value值

繼承關(guān)系:

   public class HashSet<E>
    extends AbstractSet<E>//繼承了AbstractSet
    implements Set<E>,//實現(xiàn)set方法
     Cloneable,//標(biāo)記本類可以被克隆
      java.io.Serializable//可以被序列化

構(gòu)造函數(shù):均調(diào)了HashMap對應(yīng)的構(gòu)造函數(shù)

     public HashSet() {
        map = new HashMap<>();
    }
    public HashSet(Collection<? extends E> c) {
        map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
        addAll(c);
    }
    public HashSet(int initialCapacity, float loadFactor) {
        map = new HashMap<>(initialCapacity, loadFactor);
    }
    public HashSet(int initialCapacity) {
        map = new HashMap<>(initialCapacity);
    }
    HashSet(int initialCapacity, float loadFactor, boolean dummy) {
        map = new LinkedHashMap<>(initialCapacity, loadFactor);
    }

CRUD(增刪改查)

add()

   public boolean add(E e) {//只能添加一個null值
        return map.put(e, PRESENT)==null; 
		//HashMap的put方法,如果是新添加的結(jié)點,會返回null;
		//如果是原有結(jié)點,那么會返回value值,這樣返回的就是false這樣表明集合中已經(jīng)有該元素;
    }

remove();

    public boolean remove(Object o) {
        return map.remove(o)==PRESENT;
		//HashSet添加進HashMap中所有value值都是PRESENT,
		//如果找到key值,那么返回的value值肯定是PRESENT;
		//沒有找到,返回的是null;
    }

HashSet應(yīng)用場景

去重 打印全部數(shù)據(jù),重復(fù)性元素只打印一次;

        ArrayList<Integer> arrayList=new ArrayList<>(100000);
        for (int i = 0; i <100000 ; i++) {
            arrayList.add((int) (Math.random()*1000));
        }
        iterator=arrayList.iterator();
        HashSet<Integer> hashSet1=new HashSet<>();
        while(iterator.hasNext()){
            Integer val= iterator.next();
            if(hashSet1.add(val)){//第一次添加才會返回true
                System.out.println(val);
            }
        }    

到此這篇關(guān)于Java的HashSet源碼詳解的文章就介紹到這了,更多相關(guān)Java的HashSet內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JDBC獲取數(shù)據(jù)庫連接的5種方式實例

    JDBC獲取數(shù)據(jù)庫連接的5種方式實例

    JDBC是一種用于執(zhí)行SQL語句的JavaAPI,為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成,提供了諸如查詢和更新數(shù)據(jù)庫中數(shù)據(jù)的方法,這篇文章主要給大家介紹了關(guān)于JDBC獲取數(shù)據(jù)庫連接的5種方式,需要的朋友可以參考下
    2022-06-06
  • Java遞歸來實現(xiàn)漢諾塔游戲,注釋詳細

    Java遞歸來實現(xiàn)漢諾塔游戲,注釋詳細

    這篇文章介紹了Java遞歸來實現(xiàn)漢諾塔游戲的方法,文中的代碼注釋介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • Mybatis ResultMap映射、多表查詢與緩存機制詳解

    Mybatis ResultMap映射、多表查詢與緩存機制詳解

    本文詳細介紹了MyBatis中ResultMap的使用、多表查詢(包括一對一和一對多關(guān)系)以及分步查詢和分頁查詢,此外,還探討了MyBatis的緩存機制,包括一級緩存和二級緩存,通過這些內(nèi)容,讀者可以全面掌握如何在MyBatis中進行復(fù)雜的數(shù)據(jù)查詢和緩存管理,感興趣的朋友一起看看吧
    2025-10-10
  • Spring Boot如何使用JDBC獲取相關(guān)的數(shù)據(jù)詳解

    Spring Boot如何使用JDBC獲取相關(guān)的數(shù)據(jù)詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot如何使用JDBC獲取相關(guān)數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • IDEA使用Git對分支進行開發(fā)合并的全過程

    IDEA使用Git對分支進行開發(fā)合并的全過程

    本文介紹了在IDEA中使用Git進行分支開發(fā)和合并的具體操作步驟,并分享了全局用戶名和郵箱的配置命令,幫助開發(fā)者規(guī)范高效地管理項目分支,需要的朋友可以參考下
    2025-10-10
  • Spring框架生成圖片驗證碼實例

    Spring框架生成圖片驗證碼實例

    驗證碼在很多地方都會遇到,實現(xiàn)的方法和形式也有很多,主要的目的就是為了安全,防止一些惡意的攻擊等。今天在之前搭建好的一個spring框架上寫了一個驗證碼的生成demo,我會貼出細節(jié)代碼,但是spring的配置就不在介紹了,有需要的可以參考借鑒。
    2016-08-08
  • 如何將文件流轉(zhuǎn)換成byte[]數(shù)組

    如何將文件流轉(zhuǎn)換成byte[]數(shù)組

    這篇文章主要介紹了如何將文件流轉(zhuǎn)換成byte[]數(shù)組,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 解決axios發(fā)送post請求,springMVC接收不到數(shù)據(jù)問題的處理

    解決axios發(fā)送post請求,springMVC接收不到數(shù)據(jù)問題的處理

    文章主要討論了Vue組件無法正確接收和處理Axios請求的問題,并詳細描述了SpringMVC中使用@PathVariable、@RequestBody、@RequestParam的不同場景及其對應(yīng)的前端Axios寫法
    2026-05-05
  • 詳解Spring?boot?GraalVM?原生鏡像支持

    詳解Spring?boot?GraalVM?原生鏡像支持

    GraalVM?Native?Image?是?GraalVM?提供的?ahead-of-time?(AOT)?編譯工具,可以將?Java?應(yīng)用編譯為本地可執(zhí)行文件,跳過?JVM?啟動和?JIT?編譯階段,達到“秒級啟動”和低內(nèi)存占用的效果,本文介紹Spring?boot?GraalVM?原生鏡像支持詳解,感興趣的朋友一起看看吧
    2025-12-12
  • Java使用新浪微博API通過賬號密碼方式登陸微博的實例

    Java使用新浪微博API通過賬號密碼方式登陸微博的實例

    這篇文章主要介紹了Java使用新浪微博API通過賬號密碼方式登陸微博的實例,一般來說第三方App都是采用OAuth授權(quán)認(rèn)證然后跳轉(zhuǎn)之類的方法,而本文所介紹的賬號方式則更具有自由度,需要的朋友可以參考下
    2016-02-02

最新評論

怀安县| 波密县| 平邑县| 庆城县| 平邑县| 花莲市| 福海县| 山丹县| 溧水县| 化德县| 嘉义县| 台中市| 平谷区| 丁青县| 深圳市| 建始县| 平山县| 安康市| 邹平县| 昆山市| 敦煌市| 原阳县| 紫云| 汕尾市| 晋州市| 汝南县| 陵水| 张家界市| 衡东县| 高清| 盐源县| 苍山县| 盐源县| 阜新市| 黎川县| 中山市| 宜昌市| 益阳市| 修水县| 肇庆市| 正阳县|