Java之Set集合的學習

        在學習完List集合的三個子實現類後就開始學習Set集合。

        Set集合和List集合的區別?

  Set集合:不允許元素重複,唯一的(元素可以爲null) ,不能保證迭代的順序恆久不變(底層哈希表和hascode)
  無序(存儲和取出不一致)

  List集合:允許元素重複,並且存儲特點:有序性(存儲和取出一致)

通過Set集合存儲字符串並遍歷,發現Set集合存儲元素的時候,可以保證元素的唯一性,原因什麼?

      HashSet集合的add方法底層依賴於雙列集合HashMap,它依賴於兩個方法,HashCode()方法和equals()方法,先比較字符串的HashCode()碼值一樣,再比較equals()方法。 如果hashCode碼值一樣,還要比較內容是否相同,由於存儲String,重寫了equals()方法。

               如果在開發中,元素唯一性,並且還要保證元素有序(存儲和取出一致),使用LinkedHashSet集合.

 LinkedHashSet集合:

  底層是一種鏈接列表和哈希表組成
  可以保證元素的唯一性,是由哈希表決定的(hashCode()和equals())

  可以保證元素的迭代順序一致(有序),存儲和取出一致,是由鏈表決定

TreeSet集合:

                自然排序:自定義的類實現Compareable接口,然後創建TreeSet對象,通過無參構造形式創建對象

                比較器排序 :public TreeSet(Comparator<E> comparator)

                 兩種方式:
  1)自定義一個類,該類實現Comparator接口,重寫Comparator接口中的compare()方法
  2)直接使用接口匿名內部類的方式實現
                TreeSet集合保證元素唯一,是看返回值是否爲0 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章