更新時間:2020-04-30 14:25:31 來源:動力節(jié)點 瀏覽2879次
概述
Collection接口是存放元素的集合,由Collection接口派生的兩個接口,list負責放重復的元素,而set則負責存放不重復的元素。
那么在存放的時候,set集合怎么判斷元素是否都是重復的呢?
在Java中,用到了equals方法。
自反性:對于任何非空引用值x,x.equals(x)都應返回true。
對稱性:對于任何非空引用值x和y,當且僅當y.equals(x)返回true時,x.equals(y)才應返回true。
傳遞性:對于任何非空引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals
Set集合又是怎么取出元素?
我們都知道,在Java中只要是讀取多個數(shù)據(jù),都需要用到迭代器,增強for(也就是循環(huán))
例如:
迭代遍歷
Set
Iterator
while(it.hasNext()){
Stringstr=it.next();
System.out.println(str);
}
for循環(huán)遍歷
for(Stringstr:set)
{
System.out.println(str);
}
Set中的HashSet
HashSet(哈希表)
此類實現(xiàn)了Set接口,由哈希表(實際是HashMap實例)支持。它不保證set的迭代順序,特別是它不保證該順序恒久不變。此類允許使用null元素。
特點:無序集合,存儲和取出的順序不同,沒有索引,不存儲重復元素。代碼的編寫和ArrayList完全一致。
HashSet特點:
•底層數(shù)據(jù)結構:哈希表(鏈表和數(shù)組的結合體);
•存儲取出都比較快;
•線程不安全,運行速度快;
對象的哈希值
•如果沒有重寫父類,每次運行的結果都是不同的整數(shù);
•如果子類重寫父類的方法,哈希值,自定義;
•存儲到HashSet的依據(jù);
字符串的哈希值
String類繼承Object,重寫了父類的方法hashCode
哈希表的存儲過程
publicstaticvoidmain(String[]args)
{
HashSet
set.add(newString("abc"));
set.add(newString("abc"));
set.add(newString("abc"));
set.add(newString("bbc"));
set.add(newString("bbc"));
System.out.println(set);
}
而LinkedHashSet集合,他是基于鏈表的哈希表實現(xiàn),繼承自HashSet滴
以上就是動力節(jié)點java培訓機構的小編針對“Java基礎學習:Collection中set集合方法”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。