天天看點

java集合大總結

Java集合特點和使用總結,實際開發中如何選擇用哪一種集合,Collection API總結,Map API總結,集合周遊總結

Java集合大總結

java集合架構簡圖(API關系圖):

虛線框表示接口,實線框表示類.

java集合大總結

特點和使用總結:

Collection:

  • 單列單值.

List:

  • 有序(查詢順序和插入順序一緻),有下标(索引),元素允許重複.

ArrayList:

  • 地測是動态數組資料結構,在記憶體中挨着連續開辟空間,查詢快,增删慢.

LinkedList:

  • 底層是資料連結清單結構,在記憶體中不挨着,不連續開辟空間,查詢慢,增删快.

Set/HashSet:

  • 無序(查詢順序和插入順序不一緻),無下标(索引),元素不允許重複,底層是Hash表

TreeSet:

  • 無序,沒有索引,不允許重複,可以對元素進行排序,底層是紅黑樹

Map/HashMap:

  • 雙列雙值,無序(查詢順序和插入順序不一緻),誤下标(索引),鍵不允許重複,值允許重複,鍵值是一一對應的,叫鍵值對,java中叫做Entry對象,底層是Hash表資料結構

TreeMap:

  • 可以對鍵進行排序,底層是紅黑樹

實際開發中如何選擇用哪一種集合?

  • 根據集合特點來選擇,實際開發中多用ArrayList,HashSet,HashMap

使用總結:

  • HashSet,HashMap如果要求屬性相同才認為是同一個對象,那麼要哦重寫HashCode和equals方法
  • TreeSet,TreeMap如果存儲自定義類型,要指定排序規則.要麼使用自然排序,要麼使用比較器排序

Collection API總結:

java集合大總結

Map API總結:

java集合大總結

集合周遊總結:

  • List集合:
    • 通過toArray方法把集合轉換為數組
    • 普通for循環結婚get(索引)方法
    • forEach/疊代器
  • Set集合:
    • 通過toArray将集合轉換為數組
    • forEach/疊代器
  • Map集合:
    • 拿到每一個鍵,KeySet,對每一個鍵進行周遊,通過建調用get(鍵)找到值
    • 拿到每一個Entry對象,EntrySet,通過周遊Entry對象擷取每一個鍵和值
    • 實際中該用哪種周遊集合呢?

      拿到每一個Entry對象

      Set<Map.Entry<String, Integer>> entrySet = map.entrySet(); for(Map.Entry<String, Integer> en : entrySet) { System.out.println(en.getKey() + "=" + en.getValue()); }