1. 程式人生 > >Java三大集合類總結

Java三大集合類總結

關於Java三大集合類Set,List和Map及各子類集合的區別

1. 所有常用集合類特性比較

 集合類

常用具體實現類

是否有序

執行緒安全

元素可否為null

元素是否可重複

操作效率

底層、實現


List

ArrayList

LinkedList

Vector

都有序,可以使用get(Index)方法取值

非安全

非安全

安全

都允許

都可重

查詢快,增刪慢

增刪快,查詢慢

查詢快,增刪慢

陣列

連結串列

陣列



Set

HashSet

TreeSet

無序

可自然排序或實現Comparable介面定製排序

都是非執行緒安全的

允許

不允許

都不可重複

存取速度快

效能比HashSet稍差

使用了雜湊表實現

使用二叉樹實現,SortedSet介面的唯一實現類

 
Map

HashTable

HashMap

TreeMap

取出時有雜湊順序,無排序

無序

自動排序

安全

非安全

非安全

鍵值都不允許

鍵值都允許

鍵允許,值不允許

 鍵都不可重,值都可重

效率比HashMap

通過雜湊表內部對映關係快速查詢

在新增、刪除和定位對映關係效能比HashMap稍差

Hashtable是基於陳舊的Dictionary類的

HashMap儲存方式是一個數組結構,陣列中的每一項又是一個連結串列。

實現了SortedMap介面,對映關係有一定的順序。二叉樹。


2. HashSet與TreeSet

  • 當向HashSet結合中存入一個元素時,HashSet會呼叫該物件的hashCode()方法來得到該物件的hashCode值,然後根據 hashCode值來決定該物件在HashSet中儲存位置。
  • 而TreeSet支援兩種排序方式,自然排序和定製排序,其中自然排序為預設的排序方式。向 TreeSet中加入的應該是同一個類的物件。TreeSet判斷兩個物件不相等的方式是兩個物件通過equals方法返回false,或者通過CompareTo方法比較沒有返回0。
  •    HashMap是基於雜湊表的Map介面的非同步實現。此實現提供所有可選的對映操作,並允許使用null值和null鍵。此類不保證對映的順序,特別是它不保證該順序恆久不變。

  • ……

3. HashMap和HashTable的區別

  • ……/**以後再寫**/