首页 > 解决方案 > Java Stream,如何检查 Map 值的长度

问题描述

我有一个从 Map 检索值的流表达式

String name = map.entrySet().stream()
                  .filter(map -> "fName".equalsIgnoreCase(map.getKey()))
                  .map(map -> map.getValue())
                  .collect(Collectors.joining());

我想知道如何添加检查以查看地图值是否为空白或其中有一些值。

因此,如果 map-value forfName是空白抛出异常,则将 value 放入变量中name

我该怎么做呢?

标签: javajava-stream

解决方案


重写 lambda{}使其可以包含语句,例如抛出异常。

String name = map.stream()
    .filter(entry -> "fName".equalsIgnoreCase(entry.getKey()))
    .map(entry -> {
        String v = entry.getValue();
        if(v == null || v.isEmpty()) {
            throw new IllegalStateException("null or empty value: " + entry.getKey());
        }
        return v;
    })
    .collect(Collectors.joining());

推荐阅读