先上map数据的代码:
HashMap <String, String> map = new HashMap <>();
map.put("name","joker");
map.put("gender","男");
map.put("age","19");
赶时间请之间看方法四,一行代码来遍历`Map`
方法一:
思路:
- 先获取所有key
- 再通过键获取对应的value
代码:
public static void method1(HashMap <String, String> map) {
//1.将所有的放到Set集合中
Set <String> keySet = map.keySet();
//2.遍历Set--通过String
for (String key : keySet) {
//3.通过键获取值
String value = map.get(key);
System.out.println(key+":"+value);
}
}
运行结果截图:
方法二:
利用
Map
接口中的一个内部接口Entry
Map.Entry
存储的是Map
集合中的键值对
思路:
- 通过
map.entrySet()
返回一个存有Map.Entry
类型的Set
集合 - 通过Map.Entry遍历Set集合
代码:
public static void method2(HashMap<String, String> map) {
//1.返回一个Set,这个Set存放着多个键值对
Set <Map.Entry <String, String>> entrySet = map.entrySet();
//2.遍历Set--通过Map.Entry
for (Map.Entry <String, String> entry : entrySet) {
//获取key
String key=entry.getKey();
//获取value
String value = entry.getValue();
System.out.println(key+":"+value);
}
}
运行结果截图:
方法三:
利用
Map
中的forEach()
方法
需要一个BiConsumer
类型的参数
BiConsumer
是一个接口,需要重写accept()
方法
思路:
- 给
forEach()
中写一个实现了BiConsumer
接口的匿名内部类 - 重写
accept()
方法
代码:
private static void method3(HashMap <String, String> map) {
map.forEach(new BiConsumer <String, String>() {
@Override
public void accept(String key, String value) {
System.out.println(key+":"+value);
}
});
}
运行结果截图:
方法四:
因为
BiConsumer
接口中只有一个方法
所以我们可以使用lambda表达式优化方法三
思路:
- 使用lambda表达式优化方法三
代码:
private static void method4(HashMap <String, String> map) {
map.forEach((key, value) -> System.out.println(key + ":" + value));
}