1. 程式人生 > 其它 >集合(19):Collection集合總結

集合(19):Collection集合總結

集合(19):Collection集合總結

Collection(介面)
 1、List(介面) 元素可以重複,有序(儲存和取出順序一致)
        --ArrayList類
            底層資料結構是陣列,查詢快增刪慢
            執行緒不安全的,效率高。
        --LinkedList類
            底層資料結構是連結串列,查詢慢,增刪快
            執行緒不安全的,效率高。
        --Vector類
            底層資料結構是陣列,查詢快,增刪慢
            執行緒安全的,效率低(即使是安全的,我們也不用它,後面有更好的集合替代)
            
 2、Set(介面) 元素唯一,無序
      --HashSet類
            底層資料結構是雜湊表,元素唯一是由hashCode和equals方法同時保證的
            --LinkedHashSet extends HashSet
                底層資料結構是雜湊表和雙鏈表,保證了元素唯一和有序
      --TreeSet類
          底層資料結構是紅黑樹,自平衡二叉樹
          根據構造方法的不同提供兩種排序實現方式:
           ①無參構造--自然排序(要求資料型別的類要實現Comparable介面,實現compareTo方法)
           ②有參構造--引數是實現了Comparator介面並且重寫了compare方法的物件
                    a: 自定義一個類實現
                    b: 匿名內部類的形式實現

 3、將來開發的時候,我們應該用誰呢?根據以下幾點考慮出發
	(1)元素需要唯一嗎?
    	需要:優先考慮HashSet
    	不需要:優先考慮ArrayList

	(2)需要有序嗎?
    	優先考慮ArrayList
        如果排序的規則是自定義的,優先考慮TreeSet

如果說,開發的要求沒有那麼高也沒有上面的要求,你就用ArrayList


Map(介面)元素是由key和value鍵值對組成,key是唯一的,value是可以重複的
    --HashMap
        當引用資料型別作為key的時候,該型別必須重寫hashCode()和equals()方法,保證唯一
        --LinkedHashMap
            雜湊表保證唯一(鍵唯一)
            連結串列保證有序(儲存和取出順序一致)
    --TreeMap
        當引用資料型別作為key的時候,有兩種排序方式
            自然排序
            比較器排序(推薦)

HashMap與Hashtable的區別:
        1、HashMap中的key和value允許為null值,而Hashtable不允許
        2、Hashtable是執行緒安全的,HashMap是執行緒不安全的