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

Java的HashSet源碼詳解

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

HashSet

特點(diǎn):

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

所以HashSet和HashMap的所具有的特點(diǎn)是類似的;

  •  數(shù)據(jù)不能重復(fù);
  •  可以存儲(chǔ)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>,//實(shí)現(xiàn)set方法
     Cloneable,//標(biāo)記本類可以被克隆
      java.io.Serializable//可以被序列化

構(gòu)造函數(shù):均調(diào)了HashMap對(duì)應(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) {//只能添加一個(gè)null值
        return map.put(e, PRESENT)==null; 
		//HashMap的put方法,如果是新添加的結(jié)點(diǎn),會(huì)返回null;
		//如果是原有結(jié)點(diǎn),那么會(huì)返回value值,這樣返回的就是false這樣表明集合中已經(jīng)有該元素;
    }

remove();

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

HashSet應(yīng)用場(chǎ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)){//第一次添加才會(huì)返回true
                System.out.println(val);
            }
        }    

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

相關(guān)文章

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

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

    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遞歸來實(shí)現(xiàn)漢諾塔游戲,注釋詳細(xì)

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

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

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

    本文詳細(xì)介紹了MyBatis中ResultMap的使用、多表查詢(包括一對(duì)一和一對(duì)多關(guān)系)以及分步查詢和分頁查詢,此外,還探討了MyBatis的緩存機(jī)制,包括一級(jí)緩存和二級(jí)緩存,通過這些內(nèi)容,讀者可以全面掌握如何在MyBatis中進(jìn)行復(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)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • IDEA使用Git對(duì)分支進(jìn)行開發(fā)合并的全過程

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

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

    Spring框架生成圖片驗(yàn)證碼實(shí)例

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

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

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

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

    文章主要討論了Vue組件無法正確接收和處理Axios請(qǐng)求的問題,并詳細(xì)描述了SpringMVC中使用@PathVariable、@RequestBody、@RequestParam的不同場(chǎng)景及其對(duì)應(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?啟動(dòng)和?JIT?編譯階段,達(dá)到“秒級(jí)啟動(dòng)”和低內(nèi)存占用的效果,本文介紹Spring?boot?GraalVM?原生鏡像支持詳解,感興趣的朋友一起看看吧
    2025-12-12
  • Java使用新浪微博API通過賬號(hào)密碼方式登陸微博的實(shí)例

    Java使用新浪微博API通過賬號(hào)密碼方式登陸微博的實(shí)例

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

最新評(píng)論

化德县| 小金县| 郓城县| 伊吾县| 瓦房店市| 罗江县| 桑植县| 娄底市| 庄浪县| 尚志市| 天祝| 班戈县| 墨竹工卡县| 瑞金市| 怀来县| 崇信县| 社旗县| 石家庄市| 民乐县| 云霄县| 泸水县| 济南市| 华阴市| 津市市| 舟曲县| 盐亭县| 陈巴尔虎旗| 鄂托克旗| 盐津县| 黄石市| 廊坊市| 长垣县| 榆中县| 宜丰县| 资阳市| 正定县| 三门峡市| 泸定县| 两当县| 深州市| 肥东县|