Map用于保存具有映射关系的数据,所以Map中保存的为key-value的对,称为键值对,key和value可以为任何的数据类型的数据。
null
获取Map的key集合[zhang, wang]
获取Map的value集合[123, 234]
{zhang=123, wang=234}
null
234
key和value有一对一的关系,
key不允许有重复,value可以重复。所以所有的key可以看做一个set集合,所有的value又好像是一个list。
Map中常见的方法:
clear() 清除Map中所有的key-value对。
containKey(Object key) 查询是否包含指定的key
containValue(Object value) 查询是否是否包含一个或者多个value的键值对
get(Object key) 返回指定key对应的value,如果不包含返回value
values() 返回该map中所有的value组成的Collection。
keySet()返回这个Map所有key组成的set集合。
put(Object key, Object value) 添加一个key-value对到map中。
当向Set中添加重复的元素时,Set会添加失败,但是向Map中添加可key已经存在的键值对,新的key-value会覆盖原来的key-value对。
putAll(Map) 将指定的map复制到这个map中
remove(Object key)删除指定key对应的key-value对。 如果不存在,返回null。
示例1:
public class MapDemo_01 {
public static void main(String[] args){
Map hm = new HashMap();
System.out.println(hm.put("zhang", 123));
System.out.println(hm.put("zhang", 234));
}
}
输出:
null
123
分析: 如果map中不存在
和这个key相关的value,那么put就返回null,表示没有覆盖任何元素
如果map中存在
和这个key相关的value,此时由于put方法要将这个重复的key-value进行覆盖来保证key的唯一性,所以,
put方法返回被覆盖的这个key-value的value。
在Map中,有一个方法:Set entrySet()用来返回Map包含的所有的key-value对组成的set集合,每一个集合元素都是Map.Entry的对象。
Map中有一个内部类Entry,这个类封装了一个key-value对,Entry有三个方法。
getKey() 返回Entry里包含的key值
getValue()返回Entry里包含value值
setValue(V value) 设置该Entry里包含的value值,返回新设置的value值。
其他方法的测试小例子如下:
public class MapDemo_02 {
public static void main(String[] args){
Map hm = new HashMap();
System.out.println(hm.put("zhang", 123));
System.out.println(hm.put("wang", 234));
System.out.println("获取Map的key集合"+hm.keySet());
System.out.println("获取Map的value集合"+hm.values());
System.out.println(hm);
System.out.println(hm.remove("li"));
System.out.println(hm.remove("wang"));
}
}
输出结果为:
null
null
获取Map的key集合[zhang, wang]
获取Map的value集合[123, 234]
{zhang=123, wang=234}
null
234