容器和map
子介面實現類
底層實現
儲存特點
collection
list
arraylist
陣列有序,可重;
linkedlist
雙向鍊錶
有序,可重
vector
陣列有序,可重
sethashsethashset
hashmap->陣列+鍊錶+紅黑樹
無序,不可重
treeset
treemap->紅黑樹
有序,不可重
maphashmap
陣列+鍊錶+紅黑樹
無序,不可重
以鍵值對形式儲存
treemap
紅黑樹有序,不可重
1.比較器的使用
1.內部比較器|自然排序-----重寫compareto方法
類實現comparable介面,然後實現方法comparato()方法,實現此介面的物件列表(和陣列)可以通過 collections.sort() 和 arrays.sort() 進行自動排序。
class person implements comparable}
class a;
system.out.println(arrays.tostring(person));
//排序
arrays.sort(person);
system.out.println(arrays.tostring(person));
}}
2.外部比較器|自定義比較器 ----- comparator介面
可以將 comparator 傳遞給 sort 方法(如collection.sort ()或arrays.sort()),然後實現內容,從而允許在排序順序上實現精確控制。還可以使用 comparator 來控制某些資料結構有序set和有序對映的順序。
有序set--->treeset
有序對映--->treemap
public class compare01 ;
system.out.println(arrays.tostring(person));
//可以將 comparator 傳遞給 sort 方法
//每次都可以修改。
arrays.sort(person,new comparator()
});system.out.println(arrays.tostring(person));
}}
3.比較器使用範圍
比較器常用於有序的collection或map的實現類,且其內容中存放的是自定義引用資料型別,如自定義的person類。有序的實現類有:arrayslist、linkedlist、vector、treeset、treemap
1.解決方法:自定義的引用資料型別去重問題需要在類中重寫hascode()和equals方法。
2.實現類:hashset、treeset、hashmap、treemap
其中,treemap的去重和排序都按照比較器規則來進行
1.無索引的遍歷方式 :所有set、map:hashset、treeset、hashmap、treemap
1.for..each遍歷
2.使用iterator迭代器
2.有索引實現類的遍歷方式 :所有list
1.for..each遍歷
2.使用iterator迭代器
3.普通for迴圈遍歷
4.list特有:列表迭代器listiterator()
3.map實現類的遍歷方式
1.使用map.keyset()方法,返回所有key值,用set接收。遍歷set用無索引實現類的遍歷方式
2.使用map.values()方法,返回所有value值,用collection接收。遍歷collection用無索引實現類的遍歷方式
3.使用map.entryset()方法,返回所有key-value鍵值對,map.entry型別。用set接收。遍歷set用無索引實現類的遍歷方式
以map.entryset()方法為例:
//map是hashmap物件
set> sets = map.entryset();
for(map.entryentry:sets)
容器之Collection和Map
collection 單列集合 list 有儲存順序,可重複 arraylist 陣列實現,查詢快,增刪慢 由於是陣列實現,在增和刪的時候會牽扯到陣列 增容,以及拷貝元素.所以慢。陣列是可以直接 按索引查詢,所以查詢時較快 linkedlist 鍊錶實現,增刪快,查詢慢 由於鍊錶實現,增加時只要讓前...
集合Collection和Map結構原理
list setmap attributeofall arratlist linkedlist vector hashset treeset linkedhashset hashmap hashtable linkedhashmap treemap 資料結構 動態陣列 鍊錶結構,位址任意 動態陣列 ...
Collection介面,Map介面
1.collection是集合類的頂級介面,直接繼承介面喲list和set。list介面是有序的,元素可重複,有索引 其下有 arraylist 底層資料結構使用的是陣列結構,執行緒不同步,增刪慢,查詢快 linkendlist 使用雙向鍊錶結構,執行緒不同步,增刪快,查詢慢 vector 使用資料...