这次复习一下Map集合
Map集合是双列集合,双列集合有以下特点:
- 一次需要存一对数据,键和值
- 键不能重复,值可以重复
- 键和值是一一对应的,一个键只对应一个值
- 键+值被称为键值对或键值对对象
创建一个Map集合
Map<Key,Value> map = new HashMap<>()
随便举个例子,键和值可以放其他泛型
Map<Integer,String> map = new HashMap<>()
Map集合方法
大体分为增删改查和遍历
1.增
put(键,值):添加元素
map.put(1, "张三");
map.put(2, "李四");
map.put(3, "王五");
如果直接输出map,会得出如下结果,键=值
如果想要单独获取值,可以调用values()方法,单独获取键,可以调用keySet()方法
System.out.println(map);
{1=张三, 2=李四, 3=王五}
2.删
remove(K):删除此键对应的值
clear():清空列表
map.remove(1);
//输出结果
System.out.println(map);
{2=李四, 3=王五}
3.改
put(原来的的键,新值)
这里修改还是使用put, 因为put在添加数据的时候,如果键存在,会把原有的键值对对象覆盖,返回被覆盖的值
map.put(1, "张三");
map.put(2, "李四");
map.put(3, "王五");
map.put(2,"ikun");
System.out.println(map);
//原来键为2的值被修改了
{1=张三, 2=ikun, 3=王五}
4.查
- get(key):根据键获取对应的值
- containsKey(key):判断Map中是否包含指定的键
- containsValue(Value):判断Map中是否包含指定的值
- isEmpty():判断集合是否为空
- size():返回集合的长度,即键值对的个数s
- keySet():返回Map中所有键的集合
- values():返回Map中所有值的集合
- entrySet():返回Map中所有键值对的集合
entrySet()使用例子:
Set set = map.entrySet();
for(Object o:set) {
System.out.println(o);
}
输出:1=张三
2=李四
3=王五
5.遍历
Map集合不能使用普通for循环、foreach遍历,通常有四种遍历方法
(1)使用Set集合遍历(键找值)
获取所有的键,把这些键放到一个单列集合里,遍历单列集合,得到每一个值
Set<键的元素类型> 变量名 = Map的变量.keySet()
for (集合中元素的类型 用于存储遍历元素的变量:Set集合的变量){
Map的变量.get(键);
}
Set<Integer> set = map.keySet();
for(Integer key:set){
String value = map.get(key);
System.out.println(key+":"+value);
}
输出:1:张三
2:李四
3:王五
如果记不住可以直接使用补全代码快捷键
(2) 使用entrySet()方法(键值对对象遍历)
将map集合转换为set集合,再遍历这个set集合,得到里面的键值对对象
set集合中的元素类型是Map.Entry<Integer,String>
Set<Map.Entry<Integer,String>> set = map.entrySet();
for(Map.Entry<Integer,String> entry:set){
String value = entry.getValue();
Integer key = entry.getKey();
System.out.println(key+":"+value);
}
输出结果同上
(3)使用迭代器遍历
这个方式与上一个写法类似,不过不用转换为Set集合
Iterator<Map.Entry<Integer,String>> iterator = map.entrySet().iterator();
for (Map.Entry<Integer, String> entry: map.entrySet()){
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println(key+":"+value);
}
(4)使用lambda表达式
相对来说最简洁的一个
map.forEach((Integer key,String value)->{
System.out.println(key+":"+value);
});
输出结果同上