1.Map集合:每个元素由键与值两部分组成,通过键可以找对所对应的值。
键不能重复,值可以重复;每个键只能对应一个值
2.Map常用子类:
①HashMap<K,V>
②TreeMap<K,V>
Map集合的常用方法: | |||
put(K key, V value) | 将指定的值与该映射中的指定键相关联 | ||
remove(Object key) | 如果存在,从该地图中删除一个键的映射 | ||
get(Object key) | 根据指定的键,在Map集合中获取对应的值 | ||
containsKey(Object key) | 判断集合中是否包含指定的键 | ||
Set<Map.Entry<K,V>>entrySet() | 获取到Map集合中所有的键值对对象的集合(Set集合)[与下面结合使用] | ||
Set<K> keySet() | 获取Map集合中所有的键,存储到Set集合中[与上面结合使用] |
Map<String,String> map = new HashMap<>(); //创建一个Map集合对象
map.put("a", "aa"); //添加键值对
map.put("c", "cc");
map.put("c", "dd"); //替换掉旧数据
map.remove("c"); //根据key删除键值
clear(map); //清除map集合
//获取map集合中所有的values值
Collection<String> values = map.values();
3.Map集合的遍历
①foreach遍历
//把map集合键值对封装到不同Map.Entry对象中,把这些对象保存到Set集合中
Set<Map.Entry<String, String>> set = map.entrySet();
for(Map.Entry<String,String> entry:set) { //遍历集合
//获取entry对象中key和 value
System.out.println(entry.getKey() + " = " + entry.getValue());
}
②迭代器遍历
//迭代器遍历
Iterator<Entry<String, String>> it = set.iterator();
while(it.hasNext()) {
Entry<String, String> e = it.next();
System.out.println(e.getKey() + "=" + e.getValue());
}
4.通过键获取Map集合中的所有值
①通过键找值的方法:
1.获取Map中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键
2.keyset() 遍历键的Set集合,得到每一个键
3.get(K key) 根据键,获取键所对应的值
//获取map集合中所有的key值,封装到set集合中并返回
Set<String> keys = map.keySet();
Iterator<String> it = keys.iterator(); //迭代器遍历
while(it.hasNext()) {
String key = it.next();
System.out.println(key + " = " + map.get(key) );
}
for(String key : keys) { //foreach遍历set集合
String value = map.get(key); //根据当前key获取对应value值
System.out.println(key + " = " + value);
}
②Entry键值对方法:
1.entrySet()获取Map集合中的Entry对象,以Set集合形式返回
2.遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象
3.通过getkey()、getValue() 获取Entry对象中的键与值
//把map集合键值对封装到不同Map.Entry对象中,把这些对象保存到Set集合中
Set<Map.Entry<String, String>> set = map.entrySet();
for(Map.Entry<String,String> entry:set) { //遍历集合
//获取entry对象中key和 value
System.out.println(entry.getKey() + " = " + entry.getValue());
}
总结:
List、Set、Map集合对比: | ||||
总接口 | 接口 | 子接口 | 顺序 | 元素重复 |
Collection | List | ArrayList | 有序 | 可重复 |
LinkList | 有序 | 可重复 | ||
Set | HashSet | 无序 | 不重复 | |
TreeSet | 有序(借助二叉排序树) | 不重复 | ||
Map | HashMap | 键值无序 | 键不重复、值可重复 | |
TreeMap | 键有序(借助二叉排序树) | 键不重复、值可重复 |