You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Stream一行代码判断Map中指定键对应值是否全为null

用Stream一行代码判断指定键集合对应的值是否全为null

现有如下Map:

Map<String, String> myMap = new HashMap<>();
myMap.put("a", "Something");
myMap.put("b", null);
myMap.put("c", "more");

以及List:

List<String> myList = Arrays.asList("a","b");

需求:判断myMap中所有属于myList的键对应的值是否全为null。

原实现方法:

myMap.values().removeIf(Objects::isNull);

Map<String, String> resultMap = myList.stream().filter(myMap::containsKey).collect(Collectors.toMap(Function.identity(), myMap::get));
if(!resultMap.isEmpty()){
    // 存在至少一个属于myList的键,其对应的值不为null
}

一行Stream实现方案

直接利用Stream.allMatch()完成判断,一行代码即可:

boolean allValuesNull = myList.stream().filter(myMap::containsKey).allMatch(key -> Objects.isNull(myMap.get(key)));

逻辑说明

  • filter(myMap::containsKey):过滤掉myList中不在myMap内的键,避免因get()返回null干扰判断结果
  • allMatch(...):检查所有剩余键对应的myMap值是否全为null
    • 所有符合条件的键对应值都是null时,返回true
    • 只要有一个值不为null,返回false

如果需要判断是否存在至少一个不为null的值,可改用anyMatch():

boolean hasNonNullValue = myList.stream().filter(myMap::containsKey).anyMatch(key -> Objects.nonNull(myMap.get(key)));

内容的提问来源于stack exchange,提问作者User_1940878

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:10:49