Map集合学习笔记
(一)Map集合存储键值对,一对一对的存,而且要保证键的唯一性。
(二)HashTable:底层是哈希表数据结构,不可存入null键和null值,线程同步。HashMap:则允许使用null键和null值,线程不同步。TreeMap:底层二叉树,线程不同步,可以给map集合中的键进行排序。
(三)Set集合底层就是使用了map集合
(四)Map的取出方式。1,keySet()得到所有key 2,entrySet()
package cn.cx.collection.study;
import java.util.*;
import java.util.Map.Entry;
publicclass MapDemo01 {
publicstaticvoid main(String[] args) {
HashMap<Integer,String> hm = new HashMap<Integer,String>();
hm.put(0, "java01");
hm.put(1, "java02");
hm.put(2, "java03");
hm.put(3, "java04");
//Map.Entry me = (Map.Entry)hm.entrySet();
/*Set<Integer> s = hm.keySet();
for(Integer i : s) {
System.out.println(hm.get(i));
}*/
Set<Map.Entry<Integer, String>> entrySet = hm.entrySet();
Iterator<Map.Entry<Integer, String>> it = entrySet.iterator();
while(it.hasNext()) {
Map.Entry<Integer, String> me = it.next();
System.out.println(me.getKey()+"=="+me.getValue());
}
}
(六)Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。
(七)HashMap和TreeMap保持元素唯一性的方式同HashSet和TreeSet。即通过hashCode(hash) equals(hash) compareTo(Tree)方法
(八)练习:获取字符串中字母出现的次数。
package cn.cx.collection.study;
import java.util.*;
import java.util.Map.Entry;
publicclass GetLetterNum {
publicstaticvoid main(String[] args) {
String str = "aaadddhkklhccabnmd";
//System.out.println(getLetterNum(str));
Map<Character, Integer> map = getLetterNum(str);
StringBuilder sb = new StringBuilder();
Set<Map.Entry<Character, Integer>> set = map.entrySet();
Iterator<Map.Entry<Character, Integer>> it = set.iterator();
while(it.hasNext()) {
Map.Entry<Character, Integer> me = it.next();
Character key = me.getKey();
Integer value = me.getValue();
sb.append(key+"("+value+"), ");
}
System.out.println(sb);
}
publicstatic Map<Character, Integer> getLetterNum(String str) {
Map<Character, Integer> map = new TreeMap<Character, Integer>();
char[] chs = str.toCharArray();
for(int i=0; i<chs.length; i++) {
Integer value = map.get(chs[i]);
if(value == null) {
map.put(chs[i], 1);
} else {
value = value + 1;
map.put(chs[i], value);
}
}
return map;
}
(九)