Map集合的常见遍历方式有三种:
- 第一种:键找值。即先获取Map集合全部的键,再通过遍历键来找值。(简单,推荐使用)
- 第二种:键值对。把键值对看成一个整体进行遍历。(稍微复杂)
- 第三种:使用forEach方法结合Lambda表达式。这是JDK 1.8之后才支持的。(简单,推荐使用)
键找值遍历方式
采用键找值的遍历方式,需要用到Map的如下方法:
Set<K> keySet()
:获取所有键的集合V get(Object key)
:根据键获取对应的值
示例
package com.team.map;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Map<String, Double> map = new HashMap<>();
map.put("张三", 12.5);
map.put("张三", 20.2);
map.put("李四", 22.0);
map.put("王五", 16.8);
map.put("马六", 15.6);
System.out.println(map);
Set<String> keys = map.keySet();
System.out.println(keys);
for (String key : keys) {
double value = map.get(key);
System.out.println(key + " -> " + value);
}
}
}
运行输出:
{李四=22.0, 张三=20.2, 马六=15.6, 王五=16.8}
[李四, 张三, 马六, 王五]
李四 -> 22.0
张三 -> 20.2
马六 -> 15.6
王五 -> 16.8
键值对遍历方式
把键值对看成一个整体进行遍历。
需要用到如下方法:
Map提供的方法:
Set<Map.Entry<K,V>> entrySet()
:返回此映射中包含的映射的Set视图。
Map.Entry提供的方法:
- K getKey():获取键
- V getValue():获取值
示例
package com.team.map;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Map<String, Double> map = new HashMap<>();
map.put("张三", 12.5);
map.put("李四", 22.0);
map.put("王五", 16.8);
map.put("马六", 15.6);
System.out.println("map:" + map);
Set<Map.Entry<String, Double>> entries = map.entrySet();
System.out.println("entries:" + entries);
for (Map.Entry<String, Double> entry : entries) {
String key = entry.getKey();
double value = entry.getValue();
System.out.println(key + " -> " + value);
}
}
}
运行输出:
map:{李四=22.0, 张三=12.5, 马六=15.6, 王五=16.8}
entries:[李四=22.0, 张三=12.5, 马六=15.6, 王五=16.8]
李四 -> 22.0
张三 -> 12.5
马六 -> 15.6
王五 -> 16.8
使用forEach方法结合Lambda表达式遍历
需要用到Map的如下方法:
default void forEach(BiConsumer<? super K,? super V> action)
:对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作抛出异常。
示例
package com.team.map;
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Map<String, Double> map = new HashMap<>();
map.put("张三", 12.5);
map.put("李四", 22.0);
map.put("王五", 16.8);
map.put("马六", 15.6);
System.out.println("map:" + map);
map.forEach((key, value) -> {
System.out.println(key + " -> " + value);
});
}
}
运行输出:
map:{李四=22.0, 张三=12.5, 马六=15.6, 王五=16.8}
李四 -> 22.0
张三 -> 12.5
马六 -> 15.6
王五 -> 16.8