摘要:不是同步的也就是線程不安全,如果多個(gè)線程訪問同一個(gè)集合,如果有條或者條以上線程同時(shí)修改了集合時(shí),必須使用代碼來保證其同步元素值可以是不能保證元素的排列順序,順序有可能發(fā)生變化手寫把里的用一個(gè)常量來代替底層利用,實(shí)現(xiàn)不可重復(fù)
Java知識(shí)點(diǎn)總結(jié)(Java容器-HashSet)
@(Java知識(shí)點(diǎn)總結(jié))[Java, Java容器, JavaCollection, JavaSet]
HashSet特點(diǎn)HashSet按Hash算法來存取 查找集合中的元素
HashSet具有很好的存取 查找的性能 從HashSet中查找某個(gè)對(duì)象時(shí),首先調(diào)用對(duì)象的hashCode方法獲取該對(duì)象的哈希碼,然后根據(jù)哈希碼找到相應(yīng)的存儲(chǔ)區(qū)域,最后取出該存儲(chǔ)區(qū)域的每個(gè)元素與該元素進(jìn)行equals方法比較,這樣就不用遍歷集合中所有元素就能查找到結(jié)果。
HashSet不是同步的 也就是線程不安全,如果多個(gè)線程訪問同一個(gè)Set集合,如果有2條或者2條以上線程同時(shí)修改了HashSet集合時(shí),必須使用代碼來保證其同步
元素值可以是null
不能保證元素的排列順序,順序有可能發(fā)生變化
手寫HashSetpublic class MyHashSet { HashMap map; private static final Object PRESENT = new Object(); //把map里的value用一個(gè)常量來代替 public MyHashSet(){ map = new HashMap(); } public void add(Object obj) { map.put(obj , PRESENT); //底層利用map,實(shí)現(xiàn)不可重復(fù) } public int size() { return map .size(); } public static void main(String[] args) { MyHashSet set = new MyHashSet(); set.add("1" ); set.add("2" ); set.add("3" ); System.out.println(set.size()); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/69596.html
摘要:知識(shí)點(diǎn)總結(jié)容器知識(shí)點(diǎn)總結(jié)容器是一種不包括重復(fù)元素的。由于接口的特殊性,所有傳入集合中的元素必須不同。集合判斷兩個(gè)對(duì)象是否相同,是使用方法,而不是使用運(yùn)算符的。只能存儲(chǔ),所以只會(huì)在存儲(chǔ)的情況下使用。 Java知識(shí)點(diǎn)總結(jié)(Java容器-Set) @(Java知識(shí)點(diǎn)總結(jié))[Java, Java容器, JavaCollection, JavaSet] Set Set是一種不包括重復(fù)元素的Col...
摘要:知識(shí)點(diǎn)總結(jié)容器知識(shí)點(diǎn)總結(jié)容器對(duì)象稱作迭代器,用于方便地實(shí)現(xiàn)對(duì)容器內(nèi)元素的遍歷操作接口定義如下判斷是否有元素沒有被遍歷返回游標(biāo)當(dāng)前位置的元素并將游標(biāo)移動(dòng)到下一個(gè)位置刪除游標(biāo)左面的元素,在執(zhí)行完之后該操作只能執(zhí)行一次迭代器的使用實(shí)現(xiàn)實(shí)現(xiàn)原理游 Java知識(shí)點(diǎn)總結(jié)(Java容器-Iterator) @(Java知識(shí)點(diǎn)總結(jié))[Java, Java容器] Iterator Iterator對(duì)象稱...
摘要:和的區(qū)別是非線程安全的,效率高是基于線程安全的,效率低底層基于鏈表實(shí)現(xiàn),鏈表內(nèi)存是散亂的,每一個(gè)元素存儲(chǔ)本身內(nèi)存地址的同時(shí)還存儲(chǔ)下一個(gè)元素的地址?;旧隙际且詾榛A(chǔ)。 什么是集合 Java是一門面向?qū)ο蟮恼Z言. 為了方便操作多個(gè)對(duì)象,那么我們就得把這多個(gè)對(duì)象存儲(chǔ)起來 想要存儲(chǔ)多個(gè)對(duì)象(變量),我們就需要一個(gè)容器 集合就是一個(gè)放數(shù)據(jù)的容器(集合類存放的都是對(duì)象的引用,而非對(duì)象本身) ...
摘要:而在集合中,值僅僅是一個(gè)對(duì)象罷了該對(duì)象對(duì)本身而言是無用的。將這篇文章作為集合的總結(jié)篇,但覺得沒什么好寫就回答一些面試題去了,找了一會(huì)面試題又覺得不夠系統(tǒng)。 前言 聲明,本文用的是jdk1.8 花了一個(gè)星期,把Java容器核心的知識(shí)過了一遍,感覺集合已經(jīng)無所畏懼了?。?哈哈哈....),現(xiàn)在來總結(jié)一下吧~~ 回顧目錄: Collection總覽 List集合就這么簡(jiǎn)單【源碼剖析】 Ma...
摘要:知識(shí)點(diǎn)總結(jié)容器知識(shí)點(diǎn)總結(jié)容器函數(shù)庫(kù)是包下的一些接口和類,類是用來產(chǎn)生對(duì)象存放數(shù)據(jù)用的,而接口是訪問數(shù)據(jù)的方式。底層也是數(shù)組實(shí)現(xiàn),線程安全,效率低效率高,線程不安全。 Java知識(shí)點(diǎn)總結(jié)(Java容器-Collection) @(Java知識(shí)點(diǎn)總結(jié))[Java, Java容器, JavaCollection] [toc] Collection Collection函數(shù)庫(kù)是java.uti...
閱讀 1119·2021-11-22 13:53
閱讀 1689·2021-11-17 09:33
閱讀 2454·2021-10-14 09:43
閱讀 2984·2021-09-01 11:41
閱讀 2353·2021-09-01 10:44
閱讀 3049·2021-08-31 09:39
閱讀 1574·2019-08-30 15:44
閱讀 1917·2019-08-30 13:02