Map集合体系
Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的key,另一组保存着Map的value。
Map按口的特点:
(1)用于存储任意键值对(Key-Value)
(2)键:无序、无下标、不允许重复(唯一)
(3)值:无序、无下标、允许重复
Map和Set的关系
可以说关系是很密切了,虽然Map中存放的时键值对,Set中存放的是单个对象,但如果把value看做key的附庸,key在哪里,value就在哪里,这样就可以像对待Set一样来对待Map了。事实上,Map提供了一个Entry内部类来封装key-value对,再计算Entry存储时则只考虑Entry封装的key。
如果把Map集合里的所有value放在一起来看,它们又类似于一个List,元素可以重复,每个元素可以根据索引来找,只是Map中的索引不再是整数值,而是以另一个对象作为索引。
Map中的常用方法:
内部类Entry:
Map中包括一个内部类Entry,该类封装一个键值对,常用方法:
- Object getKey():返回该Entry里包含的key值;
- Object getvalue():返回该Entry里包含的value值;
- Object setValue(V value):设置该Entry里包含的value值,并设置新的value值。
Map集合的简单使用
添加元素
Map map=new HashMap();
//添加元素
map.put("刘德华",24);
map.put("梁朝伟",23);
map.put("周星驰",25);
map.put("林俊杰",28);
map.put("刘德华",27);//将原数据替换
System.out.println("元素个数为:"+map.size());
System.out.println(map.toString());
删除元素
map.remove("刘德华");//根据键来删除,因为键是不可重复的(唯一)
System.out.println("元素个数为:"+map.size());
遍历元素[重点]
使用keySet()
Set keyset=map.keySet();
//使用keySet()来获取键
for (Object o : keyset) {
//此处可替换为map.keySet(),可省略上句
//使用map.get()来获取键相对应的值
System.out.println(o+"="+map.get(o));
}
使用entrySet()
Set<Map.Entry> entrySet=map.entrySet();
for (Map.Entry entry : entrySet) {
//此处可替换为map.entrySet(),可省略上句
System.out.println(entry);
}
判断
System.out.println(map.containsKey("刘德华"));
System.out.println(map.containsValue(24));
System.out.println(map.isEmpty());