Java集合特點和使用總結,實際開發中如何選擇用哪一種集合,Collection API總結,Map API總結,集合周遊總結
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()); }