摘要:內(nèi)部是利用實(shí)現(xiàn)的,將值存在的上這也是為什么不允許存取重復(fù)值得原因。數(shù)據(jù)結(jié)構(gòu)與支持映射中的對象關(guān)聯(lián)的虛擬值中的,只是一個(gè)無意義的空對象默認(rèn)的構(gòu)造函數(shù)查詢內(nèi)容的時(shí)候?qū)嶋H是在中查詢增加的時(shí)候,在的位置放置要存的值,在中放置一個(gè)沒有意義的空對象
hashSet內(nèi)部是利用hashMap實(shí)現(xiàn)的,將值存在hashmap的key上這也是為什么hashset不允許存取重復(fù)值得原因。
數(shù)據(jù)結(jié)構(gòu)
private transient HashMapmap; // 與支持映射中的對象關(guān)聯(lián)的虛擬值 ,map中的value,只是一個(gè)無意義的空對象 private static final Object PRESENT = new Object();
默認(rèn)的構(gòu)造函數(shù)
public HashSet() { map = new HashMap<>(); }
查詢內(nèi)容的時(shí)候?qū)嶋H是在map中查詢key
public boolean contains(Object o) { return map.containsKey(o); }
增加的時(shí)候,在key的位置放置要存的值,在value中放置一個(gè)沒有意義的空對象
public boolean add(E e) { return map.put(e, PRESENT)==null; }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/72855.html
摘要:簡介繼續(xù)分析源碼,上一篇文章把的分析完畢。本文開始分析簡單的介紹一下。存儲(chǔ)的元素是無序的并且允許使用空的元素。 1.簡介 繼續(xù)分析源碼,上一篇文章把HashMap的分析完畢。本文開始分析HashSet簡單的介紹一下。 HashSet是一個(gè)無重復(fù)元素集合,內(nèi)部使用HashMap實(shí)現(xiàn),所以HashMap的特征耶繼承了下來。存儲(chǔ)的元素是無序的并且HashSet允許使用空的元素。 HashSe...
摘要:到此發(fā)現(xiàn),實(shí)際上可以拆分成跟指的是,則是指實(shí)現(xiàn)了接口,這樣看來,的實(shí)現(xiàn)其實(shí)就比較簡單了,下面開始分析源碼。 概述 在分析HashSet源碼前,先看看HashSet的繼承關(guān)系 showImg(https://segmentfault.com/img/bVWo4W?w=605&h=425); HashSet繼承關(guān)系從上圖可以看出,HashSet繼承自AbstractSet,實(shí)現(xiàn)了Set接口...
摘要:源碼分析屬性內(nèi)部使用虛擬對象,用來作為放到中構(gòu)造方法非,主要是給使用的構(gòu)造方法都是調(diào)用對應(yīng)的構(gòu)造方法。遍歷元素直接調(diào)用的的迭代器。什么是機(jī)制是集合中的一種錯(cuò)誤機(jī)制。當(dāng)使用迭代器迭代時(shí),如果發(fā)現(xiàn)集合有修改,則快速失敗做出響應(yīng),拋出異常。 簡介 集合,這個(gè)概念有點(diǎn)模糊。 廣義上來講,java中的集合是指java.util包下面的容器類,包括和Collection及Map相關(guān)的所有類。 中...
摘要:就有這個(gè)功能,它是怎么實(shí)現(xiàn)有序的呢源碼分析繼承自,讓我們直接上源碼來看看它們有什么不同。是有序的,它是按照插入的順序排序的。所以,是不支持按訪問順序?qū)υ嘏判虻模荒馨床迦腠樞蚺判颉? 介紹 上一節(jié)我們說HashSet中的元素是無序的,那么有沒有什么辦法保證Set中的元素是有序的呢? 答案是當(dāng)然可以。 LinkedHashSet就有這個(gè)功能,它是怎么實(shí)現(xiàn)有序的呢? 源碼分析 Linked...
摘要:下面總結(jié)一下集合常用的三個(gè)子類吧無序,允許為,底層是散列表紅黑樹,非線程同步有序,不允許為,底層是紅黑樹非線程同步迭代有序,允許為,底層是雙向鏈表,非線程同步從結(jié)論而言我們就可以根據(jù)自己的實(shí)際情況來使用了。 前言 聲明,本文用的是jdk1.8 前面章節(jié)回顧: Collection總覽 List集合就這么簡單【源碼剖析】 Map集合、散列表、紅黑樹介紹 HashMap就是這么簡單【源碼...
閱讀 3870·2021-09-10 11:22
閱讀 2324·2021-09-03 10:30
閱讀 3659·2019-08-30 15:55
閱讀 1870·2019-08-30 15:44
閱讀 839·2019-08-30 15:44
閱讀 581·2019-08-30 14:04
閱讀 3041·2019-08-29 17:18
閱讀 1262·2019-08-29 15:04