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