一、Map
1、Map与Collection都是集合框架中的顶层接口。Map集合一次添加一对元素,也称为双列集合(Collection集合一次添加一个元素,也称为单列集合)
2、interface Map<K, V>:将键映射到值的对象。一个映射不能包含重复的键,每个键最多只能映射到一个值。即 Map中存储的是键值对,且必须保证键的唯一性
3、Map接口提供三种collection视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容
4、所有通用的映射实现类应该提供两个“标准的”构造方法:一个void(无参数)构造方法,用于创建空映射;一个是带有单个Map类型参数的构造方法,用于创建一个与其参数具有相同键-值映射关系的新映射。实际上,后一个构造方法允许用户复制任意映射,生成所需类的一个等价映射
5、嵌套类
(1)static interface Map.Entry<K, V>:映射项(键-值对)
6、方法
(1)添加
V put(K key, V value):将指定的值与此映射中的指定键关联。如果此映射以前包含一个该键的映射关系,则用指定值替换旧值(当且仅当m.containsKey(k)返回true时,才能说映射m包含键k的映射关系)。否则,返回null
void putAll(Map<? extends K, ? extends V> m):从指定映射中将所有映射关系复制到此映射中。对于指定映射中的每个键k到值v的映射关系,此调用等效于对此映射调用一次put(k, v)。如果正在进行此操作的同时修改了指定的映射,则此操作的行为是不确定的
(2)删除
void clear():从此映射中移除所有映射关系。此调用返回后,该映射将为空(清空Map集合)
V remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除(根据指定的key删除这个键值对)。返回此映射中以前关联该键的值,如果此映射不包含该键的映射关系,则返回null
(3)判断
boolean containsKey(Object key):如果此映射包含指定键的映射关系,则返回true
boolean containsValue(Object value):如果此映射将一个或多个键映射到指定值,则返回true
boolean isEmpty():如果此映射未包含键-值映射关系,则返回true
(4)获取
V get(Object key):返回指定键所映射的值。如果此映射不包含该键的映射关系,则返回null
注:如果此映射允许null值,则返回null值并不一定表示该映射不包含该键的映射关系。也可能该映射将该键显示地映射到null。使用containsKey(key)操作可区分这两种情况
int size():返回此映射中的键-值映射关系数(键值对的个数)
(5)其他
Set<K> keySet():返回此映射中包含的键的Set视图
Set<Map.Entry<K, V>> entrySet():返回此映射中包含的映射关系的Set视图
Collection<V> values():返回此映射中包含的值的Collection视图。用Collection而不用Set是因为值不一定唯一
//Map有泛型,Map<Integer, String>:学号和姓名
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(8, "wangcai"); //null
map.put(8, "xiaoqi"); //wangcai,存相同键,值会被覆盖,返回旧值
System.out.println(map); //{8=xiaoqi},键和值,用等号(=)连接,表示二者有关系
map.put(2, "zhangsan");
map.put(7, "zhaoliu");
System.out.println(map); //{2=zhangsan, 7=zhaoliu, 8=xiaoqi},无序,因为new的是HashMap
//删除元素
map.remove(2); //zhangsan
System.out.println(map); //{7=zhaoliu, 8=xiaoqi}
//判断
map.containsKey(8); //true
//获取
map.get(8); //xiaoqi
map.get(6); //null
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(8, "wangwu");
map.put(2, "zhaoliu");
//键是唯一的,值不一定唯一,所