常用集合用法及區別
java集合框架圖 :
簡化圖:
Collection:介面
|=List:元素可重複,有序
|=ArrayList:(可變陣列、執行緒不同步、可存null)實現了可變大小的陣列(資料結構),不是執行緒同步。它允許所有元素,包括null, 索引值從0開始。<查詢資料,效率高>
|=LinkedList:(雙向連結串列,非執行緒安全)以連結串列的形式儲存元素(資料結構),不是執行緒同步的,它允許所有元素,包括null。<插入、 刪除資料,效率高>
|=Vector:可變陣列,執行緒安全,效率低。特有遍歷:Enumeration en = stack.elements();。
|=Stack:棧Stack繼承Vector,實現一個後進先出(filo)的堆棧,索引從 1 開始。
|=Set:元素不可重複,無序(除了Treeset以外)
|=HashSet:行散列表,<自定義類的物件作為元素存入,必須重寫hashcode()以及equals()方法>。
|=TreeSet:二叉樹(紅黑樹),元素必須可排序;<自定義類的物件比較方式:①物件所屬類繼承Comparable(),②自定義比較器繼 承Comparator()>。
①Iterator:迭代器;Iterator it = list.iterator();while (it.hasNext()) {};
② 增強型for迴圈;for (Iterator it = list.iterator();it2.hasNext();) {};
③工具類 Collections;自然順序排序:sort(list);隨機排序:shuffle(list);反轉:reverse(list);2複製到1:copy(list1, list2);
④工具類 Arrays;陣列轉集合:asList(arr);自然順序排序sort(arr);2複製到1:
copy(arr1,arr2);
Map:①通過“鍵-值”對映對形式儲存,鍵唯一,底層的“鍵”是用Set來存放的;②存入Map中的對映對的“鍵”對應的類必須重寫hashcode()和
equals()方法。
|=HashMap:(雜湊表,非執行緒安全)底層資料結構是雜湊表,鍵唯一不可重複,非執行緒安全,可存null鍵null值
|=TreeMap:(二叉樹(紅黑樹),鍵可排序)
|=Hashtable:(雜湊表,執行緒安全,佔用資源比較多,效率低(少用))
①遍歷方式:
keySet();Set<String> key = mp.keySet();
entrySet();Set<Map.Entry<String, String>> ent = mp.entrySet();
②List跟Map巢狀;ArrayList<HashMap<Person, String>> list = new ArrayList<>();