1. 程式人生 > >List與Set、Map區別

List與Set、Map區別

區別總攬:
1、List,Set都是繼承自Collection介面,Map則不是

2、List特點:元素有放入順序,元素可重複
Set特點:元素無放入順序,元素不可重複,重複元素會覆蓋掉,(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的,加入Set 的Object必須定義equals()方法 ,另外list支援for迴圈,也就是通過下標來遍歷,也可以用迭代器,但是set只能用迭代,因為他無序,無法用下標來取得想要的值。)
map特點:Map 是一種把鍵物件和值物件對映的集合,它的每一個元素都包含一對鍵物件和值物件。但不繼承collection介面

3、List主要有:

  1. ArrayList 索引位置固定,查詢效率高,增加刪除效率低
  2. LinkedList 索引位置隨意,增加刪除佔優勢,查詢效率比較低

Set主要有:

  1. HashSet 無序,可以且只能放入一個null(因為資料不能重複),要實現hashCode()
  2. TreeSet 有序,不能放入null

Map主要有:

  1. HashMap 無序 插入和查詢“鍵值對”的開銷是固定的。可以通過構造器設定容量capacity和負載因子load factor,以調整容器的效能
  2. TreeMap 有序 TreeMap是唯一的帶有subMap()方法的Map,它可以返回一個子樹。

4、.執行緒安全集合類與非執行緒安全集合類
LinkedList、ArrayList、HashSet是非執行緒安全的,Vector是執行緒安全的;
HashMap是非執行緒安全的,HashTable是執行緒安全的;
StringBuilder是非執行緒安全的,StringBuffer是執行緒安全的。