java厚積薄發之set去除重複object

2021-07-25 02:27:37 字數 1269 閱讀 7875

public class setdemo 

// list集合去除重複基礎資料

listnamelist = new arraylist();

namelist.add("張三");

namelist.add("李四");

namelist.add("王五");

namelist.add("趙六");

nameset.addall(namelist);

// 輸出結果 張三 李四 王五 趙六

for(string name : nameset)

}

set集合針對string 型別和8大基礎資料型別  過濾掉重複資料,如果存放的是其他型別物件,則需要重寫hashcode方法和equals方法,當equals 比較相等時,則會去比較hashcode值 hashcode的值 如果一致的話,則不會存進set。

hashset中不允許有重複元素,這是因為hashset是基於hashmap實現的,hashset中的元素都存放在hashmap的key上面,而value中的值都是統一的乙個private static final object present = new object();。hashset跟hashmap一樣,都是乙個存放鍊錶的陣列。

hashset中add方法呼叫的是底層hashmap中的put()方法,而如果是在hashmap中呼叫put,首先會判斷key是否存在,如果key存在則修改value值,如果key不存在這插入這個key-value。而在set中,因為value值沒有用,也就不存在修改value值的說法,因此往hashset中新增元素,首先判斷元素(也就是key)是否存在,如果不存在這插入,如果存在著不插入,這樣hashset中就不存在重複值。

class user

/*** 如果物件型別是user 的話 則返回true 去比較hashcode值

*/@override

public boolean equals(object obj)

return false;

}/**

* 重寫hashcode 方法,返回的hashcode 不一樣才認定為不同的物件

*/@override

public int hashcode()

}

public class setdemo2 

system.out.println(user.equals(null));

}}

java中集合set去重使用

第一種,list,list用set去重時,無需重寫equals方法 listlist new arraylist for int i 0 i 10 i list.add 3 list.add 5 for int m 0 m list.size m setset new hashset for int...

Java之Set集合詳解

set是無序 無下標 不重複的 新增字串 建立乙個hashset hashsetset new hashset 新增 boolean add set add d boolean add2 set add d set.add a set.add a set.add b set.add c system...

java無重集合Set與迭代器Iterator

set介面 t型元素的集合,不允許包含相等元素 int size 返回集合的元素個數。boolean isempty 如果集合為空,則返回true.boolean contains object o 如果集合包含與o相等的元素,則返回true.boolean containsall collecti...