Set HashSet

Set:
HashSet:

元素是無序的(存入和取出的順序不一定一致),元素不可以重複。

HashSet:底層數據結構是哈希表。 線程是非同步  存取有序

HashSet() :快速的定位、讀取,會根據hash值來存放,因此讀取出來的順序未必就是插入的順序

問:HashSet 是如果保證元素唯一性的?

答:

HashSet:

底層數據結構是哈希表。

HashSet 是如果保證元素唯一性的?

是通過元素的兩個方法,hashCode和equals來完成。

如果元素的HashCode值相同,纔會判斷equals是否爲true。

如果元素的hashcode值不同,不會調用equals。

注意:對於判斷元素是否存在,以及刪除等操作,依賴的方法是元素的hashcode和equals方法。)

如果元素的hashcode只不同,不會調用equals。

TreeSet:

TreeSet:可以對Set集合中的元素進行排序。底層結構是二叉樹。此結構提高了比較速度 
保證元素的唯一性的依據是compareTo方法return 0;
元素需要實現Comparable接口,覆蓋compareTo方法。

這種方式也成爲元素的自然順序,或者叫做默認順序。

    return返回 1  怎麼存,怎麼取。

    return返回 -1 怎麼存,反着取

    return返回0  只有第一個存入值  

TreeSet排序的第二種方式:當元素不具備比較性

當元素自身不具備比較性,或者具備的比較性不是所需要的。

這是就需要讓集合自身具備比較性。

在集合初始化時,就有了比較方式 

定義一個類,實現Comparator接口,覆蓋compare方法。 調用比較器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章