java基礎使用的集合大總結

Java集合大總結

java集合框架簡圖(API關係圖):

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

 

 

特點和使用總結:

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總結:

 

 

Map API總結:

 

 

集合遍歷總結:

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