設置界面
集合中的多個對象沒有明顯的順序。集合與集合基本相同,沒有。
提供額外的方法,只是不同於集合行為。
集合不允許包含相同的元素,如果添加了兩個相同的元素,它將返回false。
根據equals方法,集合不實用= =運算符。
哈希集類
HashSet類是Set接口的典型實現,大多數情況下Set集合與該類壹起使用。
HashSet根據哈希算法存儲集合中的元素。
哈希集功能:
1.元素的順序無法保證,並且順序可能會改變。
2.HashSet不是同步的,多個線程同時訪問壹個Set集合,因此必須使用代碼。
確保同步
3.設置元素值可以為空。
當壹個元素存儲在HashSet集合中時,HashSet調用對象的HashCode()。
獲取對象的HashCode,根據hashCode確定對象在HashSet中的位置。
如果兩個元素equal方法的比較返回true但hashCode()方法的返回值不同,
HashSet將在不同的位置存儲兩個元素。
HashSet需要equal和hashCode來判斷兩個元素是否相同。
因此,重寫類的equals方法和hashCode()方法應該確保兩個對象通過equals傳遞。
返回true時HashCode也是相等的。
哈希算法確保壹個對象可以快速找到另壹個對象。需要時可以快速執行。
在集合中搜索元素時,哈希算法可以根據元素的值直接找到該元素。
以便程序可以快速找到元素。
通過數組元素索引查找數組中的元素,通過hashcode索引查找HashSet。
重寫hashCode()方法的基本步驟
當兩個對象通過equals方法返回true時,兩個對象的hashCode是相等的。
在對象中用作equals比較標準的屬性應該用於計算hashCode。
向HashSet添加可變對象時,如果修改HashSet集合中的對象,可能會導致
該對象等於集合中的其他對象,這使得HashSet無法正確訪問該對象。
HashSet有壹個Linked Hashset的子類,LinkedHashSet的集合,LinkedHashSet根據HashCode確定。
元素的存儲位置,同時使用鏈表來維護元素的順序,使元素看起來像
插入順序已保存,因此將按插入順序訪問集合。
Linked需要維護元素的插入順序,其性能略低於HashSet,但在叠代中具有更好的性能。
TreeSet是SortedSet接口的唯壹實現。
TreeSet可以確保元素處於已排序狀態。還提供了其他幾種方法:
1.比較儀
Comparator():返回當前集合使用的比較器,或null,這意味著。
以自然的方式分類
2.Object first():返回集合中的第壹個元素。
3.Object last():返回集合中的最後壹個元素。
4.對象下部(對象
e):返回集合中指定元素之前的元素。
5.對象更高(對象
e):返回集合中formulation元素之後的元素。
6.分類集合
SubSet(from element,toElement):返回集合的子集,範圍從到。
7.7.sorted set headSet(toElement)返回集合的子集,該子集小於to element。
8.分類集合
TailSet(fromElement)返回Set的子集,該子集由大於或等於from element的元素組成。
TreeSet按元素值排序,而不是按插入順序排序。
TreeSet使用紅黑樹的數據結構對元素進行排序:它支持自然排序(默認)和自定義排序。
自然分類:
TreeSet調用集合元素的compareTo方法來比較元素之間的大小關系。
然後按升序排列收集元素。
Java提供了壹個定義compare to(Object obj)方法的類似接口。
此方法返回壹個整數值,實現接口的類必須實現此方法和實現接口的類的對象。
妳可以比較大小。Obj1。comp Pareto(obj 2),如果該方法返回0,則表示兩個對象相等。如果
返回壹個正整數,表示obj1大於obj2如果返回負整數,則意味著obj1小於obj2。
如果要添加諸如TreeSet之類的對象,該對象必須實現Comparable接口。
當您想要將壹個對象添加到樹集中時,您將首先使用compareTo比較要添加的對象與樹集中的對象。
如果找不到compareTo,將引發ClassCastException異常。
因為只有相同類型的對象才能比較大小,所以應該在TreeSet中添加相同類型的對象。
如果TreeSet和HashSet集合中的對象是可變對象,當對象屬性改變時,將導致集合處理。
該對象復雜且容易出錯。因此您應該嘗試向集合中添加不可變對象。
不可變對象是
1.該物業為私人最終物業。
2.包含帶參數的構造函數以初始化對象。
3.該屬性有get方法,但沒有set方法。
自定義排序:
TreeSet的自然排序基於集合元素的大小,TreeSet按升序排列元素。使用自定義
排序(如降序)使用比較器接口的幫助。該接口包含壹個int比較(T o1,T o2)。
用於比較o1和o2的大小:重寫此方法可以更改排序規則。