检查地图的所有值是否为真
我有一个Map<String, Boolean> map = new HashMap<>();。
考虑其中有五个键。
map.put("A", true);
map.put("B", true);
map.put("C", false);
map.put("D", true);
map.put("E", true);
如果上面地图中的所有值都为真,我需要将一个布尔标志设置为真。
如果任何值是假那么我需要将布尔标志设置为假
我可以迭代这张地图并像旧的方式一样做,但我想知道如何通过在这张地图上流式传输在一行中做到这一点。
回答
您可以使用 allMatch
boolean flag = map.values().stream().allMatch(x -> x);
有一个问题allMatch。如果集合为空,则allMatch返回true
因此,如果您想在 map 不为空且所有值都为 true 时将 flag 设置为 true ;
boolean flag = !map.isEmpty() && map.values().stream().allMatch(x -> x);
或者像@Holger 建议的那样
boolean flag = !map.containsValue(false)
- Or just `!map.containsValue(false)`.