Java集合類(lèi)存放于 java.util 包中,是一個(gè)用來(lái)存放對(duì)象的容器。下面我們來(lái)看一下java中不重復(fù)的集合。
在資溪等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需求定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都營(yíng)銷(xiāo)網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,資溪網(wǎng)站建設(shè)費(fèi)用合理。
Set:典型實(shí)現(xiàn) HashSet()是一個(gè)無(wú)序,不可重復(fù)的集合
1、Set hashSet = new HashSet();
①、HashSet:不能保證元素的順序;不可重復(fù);不是線(xiàn)程安全的;集合元素可以為 NULL;
②、其底層其實(shí)是一個(gè)數(shù)組,存在的意義是加快查詢(xún)速度。我們知道在一般的數(shù)組中,元素在數(shù)組中的索引位置是隨機(jī)的,元素的取值和元素的位置之間不存在確定的關(guān)系,因此,在數(shù)組中查找特定的值時(shí),需要把查找值和一系列的元素進(jìn)行比較,此時(shí)的查詢(xún)效率依賴(lài)于查找過(guò)程中比較的次數(shù)。而 HashSet 集合底層數(shù)組的索引和值有一個(gè)確定的關(guān)系:index=hash(value),那么只需要調(diào)用這個(gè)公式,就能快速的找到元素或者索引。
③、對(duì)于 HashSet: 如果兩個(gè)對(duì)象通過(guò) equals() 方法返回 true,這兩個(gè)對(duì)象的 hashCode 值也應(yīng)該相同。
2、Set linkedHashSet = new LinkedHashSet();
①、不可以重復(fù),有序
因?yàn)榈讓硬捎?鏈表 和 哈希表的算法。鏈表保證元素的添加順序,哈希表保證元素的唯一性
3、Set treeSet = new TreeSet();
TreeSet:有序;不可重復(fù),底層使用 紅黑樹(shù)算法,擅長(zhǎng)于范圍查詢(xún)。
* 如果使用 TreeSet() 無(wú)參數(shù)的構(gòu)造器創(chuàng)建一個(gè) TreeSet 對(duì)象, 則要求放入其中的元素的類(lèi)必須實(shí)現(xiàn) Comparable 接口所以, 在其中不能放入 null 元素。
以上三個(gè) Set 接口的實(shí)現(xiàn)類(lèi)比較:
共同點(diǎn):
1、都不允許元素重復(fù)
2、都不是線(xiàn)程安全的類(lèi),解決辦法:Set set = Collections.synchronizedSet(set 對(duì)象)
不同點(diǎn):
HashSet:不保證元素的添加順序,底層采用 哈希表算法,查詢(xún)效率高。判斷兩個(gè)元素是否相等,equals() 方法返回 true,hashCode() 值相等。即要求存入 HashSet 中的元素要覆蓋 equals() 方法和 hashCode()方法
LinkedHashSet:HashSet 的子類(lèi),底層采用了 哈希表算法以及 鏈表算法,既保證了元素的添加順序,也保證了查詢(xún)效率。但是整體性能要低于 HashSet
TreeSet:不保證元素的添加順序,但是會(huì)對(duì)集合中的元素進(jìn)行排序。底層采用 紅-黑 樹(shù)算法(樹(shù)結(jié)構(gòu)比較適合范圍查詢(xún))
Map:key-value 的鍵值對(duì),key 不允許重復(fù),value 可以
1、嚴(yán)格來(lái)說(shuō) Map 并不是一個(gè)集合,而是兩個(gè)集合之間 的映射關(guān)系。
2、這兩個(gè)集合沒(méi)每一條數(shù)據(jù)通過(guò)映射關(guān)系,我們可以看成是一條數(shù)據(jù)。即 Entry(key,value)。Map 可以看成是由多個(gè) Entry 組成。
3、因?yàn)?Map 集合即沒(méi)有實(shí)現(xiàn)于 Collection 接口,也沒(méi)有實(shí)現(xiàn) Iterable 接口,所以不能對(duì) Map 集合進(jìn)行 for-each 遍歷。
以上就是java中的不重復(fù)的集合有哪些的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!
標(biāo)題名稱(chēng):java中不重復(fù)的集合
分享鏈接:http://jinyejixie.com/article46/gggihg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、外貿(mào)建站、搜索引擎優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司、小程序開(kāi)發(fā)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)