摘要:繼承自,繼承接口,接口繼承自。的也是使用的的的。中和方法理論上是常數(shù)時間的復雜度,前提是元素在中分散比較均勻。并且這些元素在結(jié)構(gòu)中,根據(jù)進行了排序,所以用遍歷時可以按照遞增遞減順序。遍歷訪問元素的操作比更為高效,時間由元素數(shù)量決定。
java.util.Set
HashSet繼承自AbstractSet,繼承接口Set,Set接口繼承自Collection。
null是否可以放在Set中null可以放在Set中,并且最多只能有一個。null的hashcode是0。
HashSet用什么結(jié)構(gòu)實現(xiàn)的HashSet用了一個HashMap。。。該HashMap默認的負載因子是0.75。
需要存入的對象作為HashMap的key存入,而value使用了一個公共靜態(tài)的ObjectPRESENT來填充。
HashSet的iterator也是使用的HashMap的key set的iterator。
HashSet中add、remove和contains方法理論上是常數(shù)時間的復雜度,前提是元素在bucket中分散比較均勻。迭代訪問其中元素的時間,則是元素數(shù)量+bucket容量,所以在迭代訪問操作比較重要時,不要將set的容量初始為很大。
HashSet不是線程安全的將其變?yōu)橐粋€線程安全set的官方方法是:
Set s = Collections.synchronizedSet(new HashSet(...)TreeSet是用什么結(jié)構(gòu)實現(xiàn)的
不出所料,是用TreeMap實現(xiàn)的。并且這些元素在結(jié)構(gòu)中,根據(jù)comparator進行了排序,所以用iterator遍歷時可以按照遞增、遞減順序。
comparator在TreeSet中是比較關(guān)鍵的,這些元素要么是comparable,要么自己提供一個定制的comparator。并且comparator的實現(xiàn)一定要和equals方法一致。
對于add、remove和contains方法,理論上是log(n)時間復雜度。
LinkedHashSet與HashSet的區(qū)別LinkedHashSet繼承自HashSet,但是記錄了元素的插入順序,仍然具有原來HashSet常數(shù)時間復雜度操作的優(yōu)勢,但是這些操作會比原來慢一些,用來維護這個順序。遍歷訪問元素的操作比HashSet更為高效,時間由元素數(shù)量決定。
一樣,LinkedHashSet用LinkedHashMap來實現(xiàn)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/67868.html
摘要:說到復盤基礎(chǔ),并不是所有的都會復盤,沒那個時間更沒那個必要。比如,一些基礎(chǔ)的語法以及條件語句,極度簡單。思前想后,我覺得整個計劃應(yīng)該從集合開始,而復盤的方式就是讀源碼。通常,隊列不允許隨機訪問隊列中的元素。 ?showImg(https://segmentfault.com/img/remote/1460000020029737?w=1080&h=711); 老讀者都知道,我是自學轉(zhuǎn)行...
摘要:集合類關(guān)系是和的父接口。相等必須是對稱的,約定只能和其它相等,亦然。和接口在中引入,這個單詞是和的合成,用來分割集合以給并行處理提供方便。這些并不立即執(zhí)行,而是等到最后一個函數(shù),統(tǒng)一執(zhí)行。 集合類關(guān)系: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ...
摘要:在中引入該方法,用來替換中的每個元素。的方法,只能在或之后使用,也就是確保當前指向了一個存在的項。這里使用了,該方法可以將非對象先映射為型,然后進行比較。存儲的是有序的數(shù)組,所以劃分時會按照順序進行劃分。 java.util.List replaceAll 在Java8中引入該方法,用來替換list中的每個元素。 default void replaceAll(UnaryOpe...
摘要:一名年工作經(jīng)驗的程序員應(yīng)該具備的技能,這可能是程序員們比較關(guān)心的內(nèi)容。數(shù)據(jù)結(jié)構(gòu)和算法分析數(shù)據(jù)結(jié)構(gòu)和算法分析,對于一名程序員來說,會比不會好而且在工作中能派上用場。 一名3年工作經(jīng)驗的Java程序員應(yīng)該具備的技能,這可能是Java程序員們比較關(guān)心的內(nèi)容。我這里要說明一下,以下列舉的內(nèi)容不是都要會的東西—-但是如果你掌握得越多,最終能得到的評價、拿到的薪水勢必也越高。 1、基本語法 這包括...
摘要:容器的類圖如下圖所示接口定義了存取一組對象的方法其子接口和分別定義了存儲方式。中的數(shù)據(jù)對象沒有順序且不可以重復。注意相等的對象應(yīng)該具有相等的 Chap 6 常用類 focus on : 字符串相關(guān)類 (String, StringBuffer) 基本數(shù)據(jù)類型包裝類 Math類 File類 枚舉類 6.1 字符串相關(guān)類 String 類 -- java.lang.String 類...
閱讀 3446·2023-04-25 18:03
閱讀 1213·2021-11-15 11:38
閱讀 5844·2021-10-25 09:45
閱讀 900·2021-09-24 09:48
閱讀 2414·2021-09-22 15:34
閱讀 1792·2019-08-30 15:44
閱讀 2746·2019-08-30 13:12
閱讀 650·2019-08-29 16:05