检查地图的所有值是否为真

我有一个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)`.

以上是检查地图的所有值是否为真的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>