Map集合特點(diǎn);
1,內(nèi)部存儲(chǔ)的都是鍵key值value對(duì)。
2,必須要保證的鍵的唯一性。
Map常見功能。
1,存儲(chǔ)。v put(k,v);
2,獲取。v get(k);
3,移除。v remove(k);
4,Set<k> keySet();
Set<String> keyset = map.keySet();//保證唯一性,用set來接受map中所有的鍵
for(String key:keyset){
System.out.println("key:"+key+" value:"+map.get(key));
}
5,Set<Map.Entry<k,v>> entrySet();
將map集合中映射關(guān)系存儲(chǔ)到了Set集合中.映射關(guān)系:其實(shí)就是指鍵和值的對(duì)應(yīng)關(guān)系。映射關(guān)系是什么類型的呢? Map.Entry,就是數(shù)據(jù)類型,其中.是內(nèi)部的屬性
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
//增強(qiáng)For循環(huán)
for(Map.Entry<String, Integer> e: entrySet ){
System.out.println("key:"+e.getKey()+" value:"+e.getValue());
}
//使用迭代器
Iterator<Map.Entry<String, String>> it = entrySet.iterator();
//遍歷Set中的映射關(guān)系對(duì)象。
while(it.hasNext()){
Map.Entry<String, String> me = it.next();//取到了映射關(guān)系對(duì)象。
//獲取鍵。
String key = me.getKey();
//獲取值。
String value = me.getValue();
System.out.println(key+"-----"+value);
}
6,Collection<v> values();
總結(jié):
map集合沒有迭代器,取出元素的方式:將map集合轉(zhuǎn)成單列結(jié)合,在使用單列集合的迭代器就可以了。map集合也不能直接被foreach循環(huán)遍歷。
關(guān)于Map.Entry。實(shí)際是map接口中定義了Entry接口
至于為何要定義內(nèi)部接口,參見內(nèi)部接口定義原理
Map
- |--Hashtable:數(shù)據(jù)結(jié)構(gòu):哈希表。是同步的,不允許null作為鍵和值。被hashMap替代。
- |--Properties:屬性集,鍵和值都是字符串(無泛型),而且可以結(jié)合流進(jìn)行鍵值的操作。IO流中頻繁使用。
- |--HashMap:數(shù)據(jù)結(jié)構(gòu):哈希表。不是同步的,允許null作為鍵和值。
- |--LinkedHashMap:基于鏈表+哈希表。可以保證map集合有序(存入和取出的順序一致)。
- |--TreeMap:數(shù)據(jù)結(jié)構(gòu):二叉樹。不是同步的。可以對(duì)map集合中的鍵進(jìn)行排序。
一道題目:
"werertrtyuifgkiryuiop",獲取字符串中每一個(gè)字母出現(xiàn)的次數(shù)。
要求返回結(jié)果個(gè)格式是 a(1)b(2)d(4)......
char[] chs = str.toCharArray();
Map<Character, Integer> map = new TreeMap<Character, Integer>();
for (Character s : chs) {
Integer value = map.get(s);
int count = 0;
if(value!=null){
count = value;
}
count ++;
map.put(s, count);
}
StringBuilder sb = new StringBuilder();
//2,遍歷map集合。
for(Character key : map.keySet()){
Integer value = map.get(key);
sb.append(key+"("+value+")");
}
Collections: 集合框架中的用于操作集合對(duì)象 工具類。
* 都是靜態(tài)的工具方法。
* 1,獲取Collection最值。
* 2,對(duì)List集合排序,也可以二分查找。
* 3,對(duì)排序逆序。
* 4,可以將非同步的集合轉(zhuǎn)成同步的集合。
* Xxx synchronizedXxx(Xxx) List synchronizedList(List)