導航:首頁 > 編程語言 > javaset打亂

javaset打亂

發布時間:2024-10-14 23:08:44

java怎麼修改Set里的值

通過remove和add方法,set集合中的對象屬性為private final
Set介面

集合里的多個對象沒有明顯順序。Set集合和Collection基本一樣,沒有

提供額外方法,只是和Collection行為不同

Set集合不允許包含相同的元素,如果add的是兩個相同元素會返回false

Set不實用==運算符,根據equals方法

HashSet類

HashSet類是Set介面的典型實現,大多數時候使用Set集合都是用這個類實現

HashSet按Hash演算法來存儲集合中的元素

HashSet特點:

1.不能保證元素的排列順序,順序可能變化

2.HashSet不是同步的,多個線程同時訪問一個Set集合,必須用代碼

保證同步

3.集合元素值可以是null

當向HashSet集合中存入一個元素,HashSet會調用該對象的HashCode()

得到對象的hashCode,根據HashCode來決定對象在HashSet中的位置

如果兩個元素equal方法比較返回true但是hashCode()方法返回值不同,

HashSet會把兩個元素存儲在不同位置

HashSet判斷兩個元素相同需要equal和hashCode都相同

因此重寫類的equals方法和hashCode()方法要保證兩個對象通過equals

返回true時hashCode也相等

Hash演算法保證通過一個對象快速找到另一個對象。可以很快的執行,當需要

查找集合中的某個元素時,hash演算法可以直接根據該元素的值找到該元素

從而讓程序快速找到元素。

在數組中通過數組元素索引尋找元素,HashSet通過hashcode索引

重寫hashCode()方法的基本步驟

當兩個對象通過equals方法返回true時,兩個對象的hashCode相等

對象中用作equals比較標準的屬性,應該用來計算hashCode

向HashSet中添加可變對象時,如果修改HashSet集合中對象,有可能導致

該對象與集合中其他對象相等,從而導致HashSet無法正確訪問對象

HashSet有一個子類 LinkedHashSet,LinkedHashSet集合也是根據HashCode來決定

元素的存儲位置,同時使用鏈表維護元素次序,這樣是的元素看起來是以

插入順序保存,便利集合時會按插入順序來訪問。

Linked需要維護元素的插入順序,性能略低於HashSet,但在迭代時性能更好

TreeSet是SortedSet介面的唯一實現

TreeSet可以確保元素處於排序狀態。提供了幾個額外方法:

1.Comparator
comparator():返回當前Set使用的Comparator,或者null,表示

自然的方式排序

2.Object first():返回集合中的第一個元素

3.Object last():返回集合中最後一個元素

4.Object lower(Object
e):返回集合中位於指定元素之前的元素

5.Object higher(Object
e):返回集合中位於制定元素之後的元素

6.SortedSet
subSet(fromElement,toElement):返回set的子集,范圍從from到to

7.SortedSet headSet(toElement)返回set子集,小於toElement

8.SortedSet
tailSet(fromElement)返回set子集,由大於等於fromElement元素組成

TreeSet是根據元素值來進行排序而不是根據插入順序

TreeSet採用紅黑樹的數據結構對元素排序 :支持自然排序(默認)和定製排序

自然排序:

TreeSet會調用集合元素的compareTo方法來比較元素之間的大小關系,

然後將集合元素按升序排列。

Java提供了一個Comparable介面,該介面定義了一個compareTo(Object obj)方法

該方法返回一個整數值,實現該介面的類必須實現該方法,實現了該介面的類的對象

可以比較大小。obj1.compareTo(obj2),如果方法返回0,表明兩個對象相等。如果

返回正整數,表明obj1大於obj2;如果返回負整數,表明obj1小於obj2

如果要將對象添加如TreeSet該對象必須實現Comparable介面

當想TreeSet中添加對象時,會先將要添加的對象與TreeSet中的對象用compareTo比較

如果找不到compareTo則引發ClassCastException異常

因為只有同一個類型才能比較大小 所以TreeSet中添加的應該是同一個類型的對象

TreeSet和HashSet集合中的對象如果是可變對象,對象屬性改變時,會導致集合處理

對象復雜化,易出錯。所以應該盡量在集合中添加不可變對象

不可變對象是

1.屬性為private final

2.含有帶參數構造器,為對象初始化

3.屬性有get方法沒有set方法

定製排序:

TreeSet的自然排序是根據集合元素大小,TreeSet將它們以升序排列。使用定製

排序,如降序,使用Comparator介面的幫助。介面中包含一個int compare(T o1,T o2)

用於比較o1和o2的大小:重寫該方法可以改變排序規則

閱讀全文

與javaset打亂相關的資料

熱點內容
解密dg加密的文件 瀏覽:206
gsh6什麼格式文件 瀏覽:507
dnf85版本覺醒任務 瀏覽:998
范冰冰蘋果百度雲盤資源鏈接 瀏覽:507
資料庫主機是什麼系統 瀏覽:812
pdf表單教程 瀏覽:715
百度瀏覽器去更新安卓破解版 瀏覽:855
光碟內部應用程序錯誤 瀏覽:83
iphone6升級ios9步驟 瀏覽:873
魔力代碼 瀏覽:497
win10打開區域網文件夾很卡 瀏覽:986
app收益怎麼分 瀏覽:812
我的世界什麼版本好玩 瀏覽:341
控制專碩如何報考編程 瀏覽:534
元祖在編程里是什麼意思 瀏覽:491
小碼王為什麼比核桃編程貴 瀏覽:627
qq下載app有哪些 瀏覽:380
旅遊app的社區模塊有什麼 瀏覽:847
盜版win7怎樣升級win10 瀏覽:524
怎麼壓縮文件夾不超過10mb 瀏覽:770

友情鏈接