在set中判斷元素是否重複 使用equals() 方法 如果兩個物件的equals方法返回true 則他們的hashcode值應該也是相等的。
換句話來說:如果兩個物件的equals返回是true 但是hashcode不一致 則也會認為元素不重複
hashset 具有以下特點:
hashset集合判斷兩個元素相等的標準:兩個物件通過 hashcode() 方法比較相等,並且兩個物件的 equals() 方法返回值也相等。
對於存放在set容器中的物件,對應的類一定要重寫equals()和hashcode(object obj)方法,以實現物件相等規則。即: 「相等的物件必須具有相等的雜湊碼」 。
重寫 hashcode() 方法的基本原則
重寫 equals() 方法的基本原則
以自定義的customer類為例,何時需要重寫equals()?
所有的基本型別的包裝類 及string類都實現了乙個comparable介面。
在list內取出重複數字值,要求盡量簡單。
//方式一:
public
static
void
main
(string[
] args)
} list = newlist;
for(object obj : list)
}
//方式二:利用set集合的特點
public
static
void
main
(string[
] args)
list.
clear()
; list.
addall
(set)
;for
(object obj : list)
}
Collection子介面之二 Set介面
1 set介面是collection的子介面,set介面沒有提供額外的方法 2 set 集合不允許包含相同的元素,如果試把兩個相同的元素加入同乙個set 集合中,則新增操作失敗。3 set 判斷兩個物件是否相同不是使用 運算子,而是根據 equals 方法 1 hashset 是 set 介面的典型...
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...