首页 > 解决方案 > 使用流检查映射中的键并且值不为空

问题描述

我想知道是否使用流,是否可以重构以下代码。

BiFunction<ClassA, ClassB, Boolean> function = (a, b) -> {
    Map<String, String> theMap   = a.getMap();
    String              theKey   = b.getKey();
    String              theValue = theMap.get(theKey);
    return !StringUtils.isBlank(theValue);
};

因此:

  1. 首先我们从对象 a 中获取地图
  2. 然后我们从对象 b 中获取一个密钥
  3. 我们检查地图中的键是否有值
  4. 值不为空

类似的东西(不是真正的代码):

BiFunction<ClassA, ClassB, Boolean> function = (a, b) -> {
 return a.getMap().entrySet().stream()
    .map(Entry::getKey).filter(b.getKey()::equals)
    .map(Entry::getValue).filter(!StringUtils::isBlank);
};

标签: javajava-8java-stream

解决方案


推荐阅读