1. 程式人生 > >常用集合用法及區別

常用集合用法及區別

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<>();