Map接口:
1.将键映射到值的集合
2.是一个双列集合,一个键对应唯一一个值,键不可重复,只能重复。
3.键的类型为引用类型。
4.Map集合中没有迭代方法(iterator).
Map的功能概述:
1.添加:
V put(K key,V value)
在键第一次存储时,返回的value值为null.
原因:这是因为存入value值覆盖了原先的值,而value的初始值为null。
例:Integer i = map.put("张三",23); //这里的i值应为null.
在键多次存储时 ,把被覆盖的值返回。
例:Integer i = map.put("张三",23);
Integer i1 = map.put("张三",25); //i1的值为23,map中的值为25.
2.删除:
void clear():移除所有的键值对元素。
void remove():通过对应的键值对删除值。
例:map.put("张三",23);
Integer i = map.remove("张三"); //i为23,张三代表的键已被删除。
3.判断:
boolean containsKey():判断集合是否包含指定的键
boolean containsValue):判断集合是否包含指定的值
boolean isEmpty():判断是否为空
4.获取:
Collection <V> values():获取集合中所有的值
Collection<Integer> i = map.values();
Integer i = map.get("张三"); //根据建获取值
Set<String> a = map.keySet(); //获取所有键的集合。
解释:因为map中没有迭代的方法,因此转换成了set的形式来进行遍历。
for(String a:map.keySet){
System.out.println(map.get(a));
}
Set<map.entry<String,Integer>> en = map.entrySet();
//Entry是map里面的一个内部接口,将键和值封装成了一个对象。并存储在Set集合中。
案例:统计一个字符串中的字符出现个数
package com.heima;
import java.util.HashMap;
import java.util.Map.Entry;
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
String a = "aaabbbccccccc";
char arr[] = a.toCharArray();
HashMap<Character, Integer> hm = new HashMap<Character, Integer>();
for(Character s:arr){
if(!hm.containsKey(s)){
hm.put(s, 1);
}else{
hm.put(s, hm.get(s)+1);
}
}
for(Character h:hm.keySet()){
System.out.println(h+"="+hm.get(h));
}
}
}