Java集合之Set接口

Set接口的主要功能就是去重,它可以保證集合中不會有重複的元素(equals不相等)。

Set接口

Set接口
- add (E e) 向列表內添加指定元素
- addAll(Collection< ? extends E> c) addAll(int index, Collection< ? extends E> c) 向集合內(指定位置 index)添加另一集合的全部元素
- get(int index)獲取指定位置的元素
- clear() 清空集合,可用於多次使用單個集合對象,節省資源
- contains(Object o) 判斷是否還有某個對象
- containsAll(Collection< ?> c) 判斷是否含有集合c的所有元素
- parallelStream() java8新特性,使用fork/join框架自動並行處理
- retainAll(Collection< ?> c)移除除c中元素的所有的其他元素
- remove(Object o) 移除集合中的一個元素
- removeAll(Collection< ?> c) 移除集合含有的集合c中的所有元素
- removeIf(Predicate< ? super E> filter) 底層迭代調用Predicate的test方法。Predicate函數式接口主要用提供test()方法,該方法返回一個布爾變量
- spliterator() 並行迭代器
- stream() 返回集合的流資源,用於函數式運算
- toArray() 轉換成數組
- toArray(T[] a) 將集合轉換成對應對象類型的數組

HashSet類

HashSet的底層基於HashMap實現,元素存儲在HashMap的值中,內部數據存儲是無序的,同時HashSet不是線程安全的。
可以使用Collections工具類創建線程安全的HashSet:
Set s = Collections.synchronizedSet(new HashSet(…));

LinkedHashSet繼承了HashSet,可以對照HashMap和LinkedHashMap,LinkedHashSet同樣可以保證插入元素的順序,其他的特性和HashSet一樣。

SortedSet接口默認根據自然順序對集合進行排序,保證內部集合有序。

SortedSet接口

集合內的元素根據自然順序排序,或者通過一個對應的排序器排序(創建集合時指定)
comparator() 返回有序集合使用的排序器
first() 返回有序集合的第一個元素
headSet(E toElement) 返回toElement之前的所有元素
last() 返回有序集合的最後一個元素
spliterator()
subSet(E fromElement, E toElement) 返回從fromElement到toElement的元素,包含fromElement不包含toElement
tailSet(E fromElement) 返回fromElement以後的所有元素

NavigableSet接口繼承了SortedSet,提供了更多的基於排序的方法。

NavigableSet接口

不允許插入null元素
ceiling(E e) 返回排序最靠前的集合中與e可以equal或者比e大的元素,沒有的話返回null
descendingIterator() 降序返回集合的迭代器
descendingSet() 返回一個集合的降序
floor(E e) 返回集合中最靠後與e可以equal或者比e小的元素,沒有的話返回null
headSet(E toElement) 返回toElement之前的所有元素,包含toElement
headSet(E toElement, boolean inclusive) 返回toElement之前的所有元素,isclusive決定是否包含toElement
higher(E e) 返回排序最靠前的集合中比e大的元素,沒有的話返回null
iterator()
lower(E e) 返回排序最靠後的集合中比e小的元素,沒有的話返回null
poolFirst() 獲取並移除頭部元素
poolLast() 獲取並移除尾部元素
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
返回從 fromElement到toElement的集合,fromInclusive決定是否包含fromElement,toInclusive決定是否包含toElement
subSet(E fromElement, E toElement)
返回從 fromElement到toElement的集合,包含fromElement,不包含toElement
tailSet(E fromElement) 返回fromElement之後的所有元素,包含fromElement
tailSet(E fromElement, boolean inclusive) 返回fromElement之後的所有元素,inclusive決定是否包含fromElement

TreeSet類

TreeSet類

A NavigableSet implementation based on a TreeMap. The elements are ordered using their naturNavigableSet al ordering, or by a Comparator provided at set creation time, depending on which constructor is used.

NavigableSet 的實現,底層數據基於TreeMap。底層數據的排序基於自然順序或者新建對象時定義的比較器。

有序集合,底層實現爲TreeMap
併發時不安全
ceiling(E e) 返回排序最靠前的集合中與e可以equal或者比e大的元素,沒有的話返回null
descendingIterator() 降序返回集合的迭代器
descendingSet() 返回一個集合的降序
floor(E e) 返回集合中最靠後與e可以equal或者比e小的元素,沒有的話返回null
headSet(E toElement) 返回toElement之前的所有元素,包含toElement
headSet(E toElement, boolean inclusive) 返回toElement之前的所有元素,isclusive決定是否包含toElement
higher(E e) 返回排序最靠前的集合中比e大的元素,沒有的話返回null
iterator()
lower(E e) 返回排序最靠後的集合中比e小的元素,沒有的話返回null
poolFirst() 獲取並移除頭部元素
poolLast() 獲取並移除尾部元素
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
返回從 fromElement到toElement的集合,fromInclusive決定是否包含fromElement,toInclusive決定是否包含toElement
subSet(E fromElement, E toElement)
返回從 fromElement到toElement的集合,包含fromElement,不包含toElement
tailSet(E fromElement) 返回fromElement之後的所有元素,包含fromElement
tailSet(E fromElement, boolean inclusive) 返回fromElement之後的所有元素,inclusive決定是否包含fromElement

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章