Set 介面中的方法和 Collection 中方法一致的。Set 介面取出方式只有一種, 迭代器 。 ...
java. util. Set 介面
Set 介面中的方法和 Collection 中方法一致的。Set 介面取出方式只有一種, 迭代器 。
- HashSet : 底層數據結構是哈希表,線程 是不同步的 。 無序,高效;HashSet 集合保證元素唯一性 :通過元素的 hashCode 方法,和 equals 方法完成的。當元素的 hashCode 值相同時,才繼續判斷元素的 equals 是否為 true。如果為 true,那麼視為相同元素,不存。如果為 false,那麼存儲。如果 hashCode 值不同,那麼不判斷 equals,從而提高對象比較的速度。
- LinkedHashSet : 有序,hashset 的子類。
- TreeSet : 對 Set 集合中的元素的進行指定順序的排序。 不同步 。TreeSet 底層的數據結構就是二叉樹。
對於ArrayList 集合,判斷元素是否存在,或者刪元素的依據都是equals
方法。
對於HashSet 集合,判斷元素是否存在,或者刪除元素,依據的是 hashCode
方法和 equals
方法。
TreeSet:
用於對 Set 集合進行元素的指定順序排序,排序需要依據元素自身具備的比較性。
如果元素不具備比較性,在運行時會拋出ClassCastException
異常。
- 所以元素需要實現
Comparable
介面 ,讓元素具備可比較性, 重寫compareTo
方法 。依據compareTo
方法的返回值,確定元素在 TreeSet 數據結構中的位置。 - 或者用比較器方式,將
Comparator
對象傳遞給TreeSet
構造器來告訴樹集使用不同的比較方法