java Set相關總結

2021-08-22 13:09:53 字數 797 閱讀 3944

無序儲存,獨一無二(值不能重複)

陣列+鍊錶的結構。hashset儲存值時不是按順序來存,而是按照雜湊值來存,取的時候同樣是按照雜湊值來取。hashset也是不能存放相同的值,它是通過hashcode()和equals()來判斷,如果hashset中已存在相同的物件,則不儲存(這與hashmap不一致,hashmap遇到物件相等則會覆蓋,詳細比較可以參考博文《 hashset與hashmap比較》)。

物件相等:如果兩個引用指向同乙個物件,那麼這兩個引用是相等的,他們的hashcode方法返回的值一致。如果沒有重寫object中hashcode方法,返回的是物件在記憶體中的位址(值中帶有『@』)。所以必須要要重寫hashcode()方法,才能使得兩個物件

都有相同的hashcode,並且還要重寫equals()方法使得返回的值為true。滿足這兩個條件,那麼證明兩個物件在hashmap/hashset中是相等的。

紅黑樹結構。容器中存放的元素有序(左小右大),且不重複。

有序:set是無序的,那麼treeset是通過什麼來給元素排序的呢?第一種,使用預設的排序規則,即元素實現comparable介面中的compareto方法;第二種,使用容器自身的排序規則,初始化時傳入乙個comparator,實現該介面的compare方法。

compare的優先順序高於compareto。

重複:如何來判斷元素是否重複呢?也是通過compareto或者comopare方法中的return 0 來判斷。

會儲存插入的順序, 在通過iterator進行遍歷的時候,先put的元素排在前面。

區分這些集合的特點貌似有點困難,但是只要記住這幾條**規則即可:

Java Set常見方法

set 元素不能重複,無序。set介面中的方法和collection一致 hashset 內部資料結構是雜湊表,是不同步的。雜湊表確定元素是否相同 1 判斷的是兩個元素的雜湊值是否相同,如果相同再判斷兩個物件的內容是否相同。2 判斷雜湊值相同,其實判斷的是物件的hashcode的方法,判斷內容相同,...

Java Set介面全攻略

乙個不包含重複元素的集合 並且還是無序的 無下標 set 介面繼承 collection 介面 內部實現方法相同 在此不再贅述 是set 的實現類 利用hashset 進行去重 建立乙個人類物件 不再演示 利用hashset 進行去重物件 hashsetset new hashset set.add...

java Set集合的增刪改查

set集合是無序且不可重複的,可以新增空.值進去.奇葩.set集合中的增添改查是類似於list中的,只不過不能新增到指定位置,因為set集合是無序的,也沒有get方法。歷遍元素只能使用迭代器或者for each來迴圈歷遍 具體方法為 增 add addall 刪 remove object remo...