作者:猫心晴空5_826 | 来源:互联网 | 2024-12-12 09:31
假设您有一个Map
类型的地图,例如:
Map map = new HashMap<>();
map.put("A", true);
map.put("B", true);
map.put("C", false);
map.put("D", true);
map.put("E", true);
您的目标是在所有值均为真时设置一个布尔标志为真,只要存在任何一个值为假,则该标志应被设置为假。
虽然可以通过传统的迭代方法实现这一功能,但这里介绍一种更加简洁的方法——利用Java 8引入的流(Stream)API来完成任务。具体做法如下:
boolean flag = map.values().stream().allMatch(Boolean::booleanValue);
上述代码通过调用allMatch
方法检查地图中的所有值是否满足给定的条件,在本例中即所有值是否均为真。需要注意的是,当地图为空时,allMatch
会默认返回true
。因此,若希望仅在地图非空且所有值均为真时才将标志设为真,可采用以下方式:
boolean flag = !map.isEmpty() && map.values().stream().allMatch(Boolean::booleanValue);
此外,还有另一种更为简洁的方法,由@Holger提出,直接检查地图中是否包含值为假的条目:
boolean flag = !map.containsValue(false);
这种方法不仅代码量更少,而且在大多数情况下性能也更好。