真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中不重復(fù)的集合

Java集合類存放于 java.util 包中,是一個用來存放對象的容器。下面我們來看一下java中不重復(fù)的集合。

在資溪等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需求定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,資溪網(wǎng)站建設(shè)費用合理。

Set:典型實現(xiàn) HashSet()是一個無序,不可重復(fù)的集合

1、Set hashSet = new HashSet();

①、HashSet:不能保證元素的順序;不可重復(fù);不是線程安全的;集合元素可以為 NULL;

②、其底層其實是一個數(shù)組,存在的意義是加快查詢速度。我們知道在一般的數(shù)組中,元素在數(shù)組中的索引位置是隨機的,元素的取值和元素的位置之間不存在確定的關(guān)系,因此,在數(shù)組中查找特定的值時,需要把查找值和一系列的元素進行比較,此時的查詢效率依賴于查找過程中比較的次數(shù)。而 HashSet 集合底層數(shù)組的索引和值有一個確定的關(guān)系:index=hash(value),那么只需要調(diào)用這個公式,就能快速的找到元素或者索引。

③、對于 HashSet: 如果兩個對象通過 equals() 方法返回 true,這兩個對象的 hashCode 值也應(yīng)該相同。

2、Set linkedHashSet = new LinkedHashSet();

①、不可以重復(fù),有序

因為底層采用 鏈表 和 哈希表的算法。鏈表保證元素的添加順序,哈希表保證元素的唯一性

3、Set treeSet = new TreeSet();

TreeSet:有序;不可重復(fù),底層使用 紅黑樹算法,擅長于范圍查詢。

*  如果使用 TreeSet() 無參數(shù)的構(gòu)造器創(chuàng)建一個 TreeSet 對象, 則要求放入其中的元素的類必須實現(xiàn) Comparable 接口所以, 在其中不能放入 null 元素。

以上三個 Set 接口的實現(xiàn)類比較:

共同點:

1、都不允許元素重復(fù)

2、都不是線程安全的類,解決辦法:Set set = Collections.synchronizedSet(set 對象)

不同點:

HashSet:不保證元素的添加順序,底層采用 哈希表算法,查詢效率高。判斷兩個元素是否相等,equals() 方法返回 true,hashCode() 值相等。即要求存入 HashSet 中的元素要覆蓋 equals() 方法和 hashCode()方法

LinkedHashSet:HashSet 的子類,底層采用了 哈希表算法以及 鏈表算法,既保證了元素的添加順序,也保證了查詢效率。但是整體性能要低于 HashSet  

TreeSet:不保證元素的添加順序,但是會對集合中的元素進行排序。底層采用 紅-黑 樹算法(樹結(jié)構(gòu)比較適合范圍查詢)

Map:key-value 的鍵值對,key 不允許重復(fù),value 可以

1、嚴格來說 Map 并不是一個集合,而是兩個集合之間 的映射關(guān)系。

2、這兩個集合沒每一條數(shù)據(jù)通過映射關(guān)系,我們可以看成是一條數(shù)據(jù)。即 Entry(key,value)。Map 可以看成是由多個 Entry 組成。

3、因為 Map 集合即沒有實現(xiàn)于 Collection 接口,也沒有實現(xiàn) Iterable 接口,所以不能對 Map 集合進行 for-each 遍歷。

以上就是java中的不重復(fù)的集合有哪些的詳細內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!


標題名稱:java中不重復(fù)的集合
分享路徑:http://weahome.cn/article/gggihg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部