java List 、Set 、Map集合聯絡與區別
List Map Set 集合
一、基礎概念
1. Collection 和 Map 介面
Java集合框架主要由 Collection和Map兩個根介面及其子介面、實現類組成。
1) Collection 介面是Set、List、和Queue介面的父介面:
Collection: Set 、List 、Queue 1. Set集合包括: HashSet ( LinkedHashSet)、SortedSet (TreeSet)、EnumSet 2. List集合包括: ArrayList 、 LinkedList 、 Vector 3. Queue集合: (併發程式設計中涉及,一般用於緩衝,併發訪問) 其中 ArrayList 、LinkedList 、HashSet 、 TreeSet 為常用實現類。
2) Map 介面實現類儲存具有對映關係的資料。每項資料由鍵值對(key ,value)組成,其中key不可重複:
Map 主要實現類:HashMap (LinkedHashMap)、SortedMap(TreeMap) 、HashTable(Properties)、 EnumMap等
其中 HashMap 、TreeMap 為常用實現類。
二、List 集合
List集合儲存物件為 重複且有序 。
1. ArrayList :陣列集合型別;可動態增加容量
特點:元素增刪慢,查詢快
2. LinkedList :連結串列集合型別;雙向迴圈列表,可用作為堆疊
特點:方便增刪
3.常用方法:
具體方法檢視 ArrayList API 和 LinkedList API
add(Object e):新增元素,按照插入的順序排列
add(int index, Object e):向指定索引處新增元素,原有元素依次後移
remove(Object e):刪除指定元素,返回值為被刪除的元素
remove(int index):刪除指定索引處元素,返回值為被刪除的元素
set(int index, Object e):將索引處的元素替換成指定元素,返回值為替換前的元素
get(int index):獲取指定索引處的元素,並返回該元素
三、Set集合
Set集合儲存物件為 唯一且無序 。(插入順序與遍歷循序不一致)
1. HashSet :元素不重複且無序集合,有且僅有一個元素為null
2. TreeSet:元素不重複但有序(樹結構)集合 ,元素不能為null;
3. 常用方法:
具體方法檢視 HashSet API 和 TreeSet API
boolean |
add(E e) 將指定的元素新增到此組如果尚未存在。 |
---|---|
void |
clear() 刪除所有從這個集合的元素。 |
Object |
clone() 返回一個淺拷貝的HashSet例項:元素本身不是克隆。 |
boolean |
contains(Object o) 如果這個集合包含指定的元素返回true。 |
boolean |
isEmpty() 如果這組不包含任何元素返回true。 |
Iterator<E> |
iterator() 返回一個迭代器在這個集合的元素。 |
boolean |
remove(Object o) 從這組刪除指定的元素是否存在。 |
int |
size() 返回元素的數量在這集(基數)。 |
四、 Map集合
Map集合介面 表示一個鍵值對(key,value)的對映。其中:
1.KeySet:為一個Map中 鍵(key)的集合,以Set的形式儲存,所以不能重複。通過Map.KeySer()方法獲取。遍歷方法:
Set set = map.KeySet();
for(Object key : set){
System.out.println(map.get(key));
}
2.Values: 為一個Map中 值(value)的集合,以Collection的形式儲存,所以可重複。通過Map.Values()方法獲取。遍歷方法:
Collection values = map.Values();
Iterator it = values.iterator();
while(it.hasNext()){
System.out.printLn(it.next());
}
3.Entry:為Map介面中的靜態內部介面,表示某個鍵值對的對映。通過Map.entrySet()方法獲取一組Entry集合,並儲存在Set中;
遍歷方法:
Set entrySet = map.entrySet();
for (Object entrys : entrySet) {
Map.Entry entry = (Map.Entry) entrys; //獲取到一組Entry
System.out.println(entry); //key=value
System.out.println(entry.getKey() + " / " + entry.getValue());
}
-
HashMap: 速度快,無序 ; 執行緒不安全,key-value 允許為空
-
TreeMap: 有序 ,效率比hashMap低
-
LinkedHashMap: (HashMap子類)結合HashMap和TreeMap的優點:有序效率高
應用場景:
快速查詢考慮 HashMap ;
需特定排序考慮 TreeMap ;
僅需要插入順序考慮LinkedhashMap ;