一、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,...