Set集合相關經典題目

2021-10-17 08:52:44 字數 1410 閱讀 4496

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...