1、在list內去除重複數字值,要求盡量簡單
2、寫出下題輸出結果
1、建立乙個person類,重寫equals()和hashcode() 方法
public
class
person
public
person
(int id, string name)
@override
public string tostring()
';}@override
public
boolean
equals
(object o)
@override
public
inthashcode()
}
2、測試類
@test
public
void
test2()
結果:
2. 元素新增過程:(以hashset為例)
我們向hashset中新增元素a,首先呼叫元素a所在類的hashcode()方法,計算元素a的雜湊值,此雜湊值接著通過某種演算法計算出在hashset底層陣列中的存放位置(即為:索引位置,判斷陣列此位置上是否已經元素:
如果此位置上沒其他元素,則元素a新增成功。 —>情況1
如果此位置上其他元素b(或以鍊錶形式存在的多個元素,則比較元素a與元素b的hash值:
如果hash值不相同,則元素a新增成功。—>情況2
如果hash值相同,進而需要呼叫元素a所在類的equals()方法:
equals()返回true,元素a新增失敗
equals()返回false,則元素a新增成功。—>情況3
對於新增成功的情況2和情況3而言:元素a 與已經存在指定索引位置上資料以鍊錶的方式儲存。
jdk 7 :元素a放到陣列中,指向原來的元素。
jdk 8 :原來的元素在陣列中,指向元素a
總結:七上八下
hashset底層:陣列+鍊錶的結構。(前提:jdk7)
------尚矽谷課堂筆記
Set集合相關20200917
1,set集合,繼承自collection,不包含重複的元素。沒有帶索引的方法,所以不能使用普通for迴圈。而進行遍歷時,不一定按照順序取值。2,雜湊值是jdk通過字串或者數值或者物件的位址經過運算得到的乙個整型的數值。預設情況下,不同物件的雜湊值是不相同的,但是通過在類中對雜湊值進行重寫,可以實現...
Collection集合 (set集合)
不包含重複元素的集合 即使新增重複元素之後,最終也只能顯示乙個 沒有帶索引的方法,所以不能使用普通的for迴圈遍歷 hashset 對集合的迭代順序不作任何保證 object類中有乙個方法可以獲取物件的雜湊值 public int hashcode 返回物件的雜湊碼值 物件的雜湊值特點 同乙個物件多...
List集合 Set集合
一 請簡述list介面的特點。v 它是乙個元素訪問有序的集合。例如,存元素的順序是11 22 33。那麼集合中,元素的儲存就是按照11 22 33的順序完成的 v 它是乙個帶有索引的集合,通過索引就可以精確的操作集合中的元素 與陣列的索引是乙個道理 v 集合中可以有重複的元素,通過元素的equals...