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