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方法。 調用比較器