Android基礎-Collection之Set

前言:學習Set之前,如果你對List沒有充分的瞭解,那就先學一波List吧!

從List我們知道它是Collection的子接口,也就是對List做了進一步的封裝,那他也有了自己的特點。有序的集合List,元素可以重複。可以有null。

那麼Set呢?

讓我們開一波Set車吧!

Set接口

 

簡單介紹:Set接口是Collection的接口,是無序的Set集合且集合內元素不能重複。常用的Set實現類:

HashSet、LinkedHashSet、TreeSet

 

1.HashSet:

 

  • 特點:基於HashMap進行存儲。遍歷時不保證順序,並且不保證下次遍歷的順序和之前一樣。HashSet允許null元素。
  • 與HashMap比:HashSet的集合就是HashMap的Key的集合,然後HashMap的val默認都是PRESENT。HashMap的定義即是key不重複的集合。使用HashMap實現,這樣HashSet就不需要再實現一遍。所以所有的add,remove等操作其實就是HashMap的add、remove操作,遍歷操作其實就是HashMap的keySet的操作。

 

2.LinkedHashSet:

 

  • 特點:LinkedHashSet相對於HashSet來說就是一個可以保持順序的Set集合。HashSet是無序的,LinkedHashSet會根據add、remove這些操作的順序在遍歷時返回固定的集合順序。這些順序不是元素大小的順序,而是可以保持2次遍歷的順序是一樣的。
  • 與LinkedHashMap比:LinkedHashSet的數據結構是基於LinkedHashMap。類似HashSet基於HashMap的源碼實現。

 

3.TreeSet:

 

  • 特點:TreeSet即是一組有次序的集合,如果沒有指定排序規則Comparator,則按照自然排序。(自然排序即e1.compareTo(e2) == 0作爲比較)
  • 注意:TreeSet內元素必須Comparable接口。
  • 與TreeMap比:TreeSet源碼的算法即基於TreeMap。

 

Set實現 使用場景 數據結構

HashSet 無序的、無重複的數據集合 基於HashMap

LinkedSet 維護次序的HashSet 基於LinkedHashMap

TreeSet 保持元素大小次序的集合,元素需要實現Comparable接口 基於TreeMap

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