Map 接口
- 存储键值对类型的数据,存储的每一个数据都是由一个键值对组成
- key-value 映射
- Map中存储数据的特点->无序(存放的书序与内部存储的顺序不一致)
- key—> 无序的,不可重复,唯一的—>Set集合
- value–> 无序的,可重复 —>Collection集合
- 注意:
- 一个key只能匹配一个value
- 如果一个key想要匹配多个value值,可以存储当一个集合中(ArrayList)
- 去重:
- 根据key的值做去重,如果存放相同key的映射,值value会覆盖
- 遍历:
- keySet() 获取所有的key,根据key可以索取value
- values() 获取所有的value值,没有办法获取到key
- Set<Map.Entry<K,V>> entrySet() 把map集合中的每一个映射封装成为Map.Entry类型的数据,放入一个set集合中返回
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapDemo01 {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap();
//存储
map.put("张三", 180);
map.put("王五", 190);
map.put("李四", 180);
map.put("胡歌", 185);
map.put("彭于晏", 183);
System.out.println(map);
System.out.println(map.size());
map.put("李四", 170);
System.out.println(map);
//获取
System.out.println(map.get("张三"));
//删除
System.out.println(map.remove("李四"));
System.out.println(map);
/*
* boolean containsKey(Object key)
如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value)
*/
System.out.println(map.containsKey("王五"));
System.out.println(map.containsValue(170));
System.out.println("--------遍历---------");
System.out.println("--------keySet()-----------");
Set<String> keys = map.keySet();
//set的遍历方式与Collection相同,只能通过增强for,迭代器iterator遍历
for(String str : keys) {
System.out.println(str+"--->"+map.get(str));
}
System.out.println("--------values()-----------");
Collection<Integer> col = map.values();
System.out.println(col);
System.out.println("------Set<Map.Entry<K,V>> entrySet()-----");
Set<Map.Entry<String,Integer>> set = map.entrySet();
for(Map.Entry<String,Integer> m : set) {
System.out.println(m.getKey()+"-->"+m.getValue());
}
}
}