Collection子介面之一 Set介面

2021-10-25 00:20:41 字數 1128 閱讀 9170

一、set:儲存無序的、不可重複的資料

實現類:

set介面中沒有額外定義新的方法,使用的時collection中的方法

要求:

linkedhashset的使用:

hashset說明:

無序性:不等於隨機性。儲存的資料在底層陣列中並非按照陣列索引的順序新增,而是根據資料的雜湊值來決定的

不可重複性:保證新增的元素按照equals()判斷時,不能返回true。即相同的元素只能新增乙個

treeset說明

向treeset中新增的資料,要求是相同類的物件。

兩種排序方式:自然排序(實現comparable介面)和定製排序(comparator)

自然排序中,比較兩個物件是否相同的標準為:compareto()返回0,不再是equals().

二、新增元素的過程:以hashset為例:

我們向hashset中新增元素a,首先呼叫元素a所在類的hashcode()方法,計算元素a的雜湊值。

此雜湊值接著通過某種演算法計算出在hashset底層陣列中的存放位置(即為:索引位置),

判斷陣列此位置上是否已經有元素:

如果此位置上沒有其他元素,則元素a新增成功。情況一如果此位置上有其他元素b(或以鍊錶形式存在的多個元素),則比較元素a與元素b的雜湊值:

如果hash值不相同,則元素a新增成功。情況二如果hash值相同,進而需要呼叫元素a所在類的equals()方法:

equals()返回true,元素a新增失敗

equals()返回false,則元素a新增成功。情況三對於新增成功的情況二和情況三而言:元素a與已經存在指定索引位置上的資料以鍊錶的方式儲存

jdk7:元素a放到陣列中,指向原來的元素

jdk8:原來的元素在陣列中,指向元素a

總結:七上八下

hashset底層是:資料加鍊表的結構

public

void

test1()

}@test

public

void

test2()

}

Collection子介面 List介面

3.常用實現類 4.原始碼分析 難點 4.2 linkedlist的原始碼分析 4.3 vector的原始碼分析 5.儲存的元素的要求 1.儲存的資料特點 儲存序的 可重複的資料。2.常用方法 記住 增 add object obj 刪 remove int index remove object ...

Collection子介面 Set介面

1.儲存的資料特點 無序的 不可重複的元素 具體的以hashset為例說明 無序性 不等於隨機性。儲存的資料在底層陣列中並非照陣列索引的順序新增,而是根據資料的雜湊值決定的。不可重複性 保證新增的元素照equals 判斷時,不能返回true.即 相同的元素只能新增乙個。2.元素新增過程 以hashs...

Collection子介面 Set介面

無序性不等於隨機性。儲存的資料在底層陣列中並非照陣列索引的順序新增,而是根據資料的雜湊值決定的。test public void test 保證新增的元素照equals 判斷時,不能返回true,即相同的元素只能新增乙個。test public void test 我們向hashset中新增元素a,...