推薦閱讀: HashSet原理該類實(shí)現(xiàn)了Set接口,,不允許出現(xiàn)重復(fù)元素,,不保證集合中元素的順序,允許包含值為null的元素,,但最多只能一個(gè),。 對(duì)于 HashSet 而言,HashSet繼承自AbstractSet,,它是基于 HashMap 實(shí)現(xiàn)的,,HashSet 底層使用HashMap 來保存所有元素。 因此HashSet的實(shí)現(xiàn)比較簡(jiǎn)單,,相關(guān) HashSet 的操作,,基本上都是直接調(diào)用底層 HashMap 的相關(guān)方法來完成,我們應(yīng)該為保存到 HashSet 中的對(duì)象覆蓋 hashCode() 和 equals() 構(gòu)造方法HashSet() 構(gòu)造一個(gè)新的空 set,,其底層 HashMap 實(shí)例的默認(rèn)初始容量是 16,,加載因子是 0.75。 HashSet(Collection extends E> c) 構(gòu)造一個(gè)包含指定 collection 中的元素的新 set,。 HashSet(int initialCapacity) 構(gòu)造一個(gè)新的空 set,,其底層 HashMap 實(shí)例具有指定的初始容量和默認(rèn)的加載因子(0.75)。 HashSet(int initialCapacity, float loadFactor) 構(gòu)造一個(gè)新的空 set,,其底層 HashMap 實(shí)例具有指定的初始容量和指定的加載因子,。 常用方法size() 返回此 set 中的元素的數(shù)量(set 的容量)。 isEmpty() 如果此 set 不包含任何元素,,則返回 true,。 add(E e) 如果此 set 中尚未包含指定元素,則添加指定元素,。 iterator() 返回對(duì)此 set 中元素進(jìn)行迭代的迭代器,。 remove(Object o) 如果指定元素存在于此 set 中,則將其移除,。 contains(Object o) 如果此 set 包含指定元素,,則返回 true,。 clear() 從此 set 中移除所有元素。 size() 返回此 set 中的元素的數(shù)量(set 的容量),。 HashSet isEmpty()如果此 set 不包含任何元素,,則返回 true。 HashSet add(E e)如果此 set 中尚未包含指定元素,,則添加指定元素,。 HashSet iterator()返回對(duì)此 set 中元素進(jìn)行迭代的迭代器。 HashSet contains(Object o)如果此 set 包含指定元素,,則返回 true,。 HashSet clear()從此 set 中移除所有元素,。 HashSet 總結(jié)1.實(shí)現(xiàn)原理,,基于哈希表(hashmap)實(shí)現(xiàn)。 2. 不允許重復(fù)鍵存在,,但可以有null值,。 3. 哈希表存儲(chǔ)是無序的。 4. 添加元素時(shí)把元素當(dāng)作hashmap的key存儲(chǔ),,HashMap的value是存儲(chǔ)的一個(gè)固定值object 5. 排除重復(fù)元素是通過equals檢查對(duì)象是否相同,。 6. 判斷2個(gè)對(duì)象是否相同,先根據(jù)2個(gè)對(duì)象的hashcode比較是否相等(如果兩個(gè)對(duì)象的hashcode相同,,它們也不一定是同一個(gè)對(duì)象,,如果不同,那一定不是同一個(gè)對(duì)象)如果不同,,則兩個(gè)對(duì)象不是同一個(gè)對(duì)象,,如果相同,在將2個(gè)對(duì)象進(jìn)行equals檢查來判斷是否相同,,如果相同則是同一個(gè)對(duì)象,,不同則不是同一個(gè)對(duì)象。 7. 如果要完全判斷自定義對(duì)象是否有重復(fù)值,,這個(gè)時(shí)候需要將自定義對(duì)象重寫對(duì)象所在類的hashcode和equals方法來解決,。 8. .哈希表的存儲(chǔ)結(jié)構(gòu)就是:數(shù)組+鏈表,數(shù)組的每個(gè)元素都是以鏈表的形式存儲(chǔ)的,。 以上就是HashSet的常用方法,,還有一些繼承過來的方法,大家可以自行測(cè)試一下,。如果有疑問了可以到小編的初學(xué)者交流群和小編一起交流,,提問,小編會(huì)在第一時(shí)間與你溝通。
公眾號(hào)資源免費(fèi)分享?。,。?/p> 2017年某培訓(xùn)班最新視頻+幾十個(gè)項(xiàng)目免費(fèi)分享 公眾號(hào)輸入“我要視頻” |
|