java - Java 8 地图流
问题描述
有没有办法让这段代码使用 Java 8?
public static boolean areBooleansValid(Map<String, Object> pairs, List<String> errors, String... values) {
for (String value : values) {
if (pairs.get(value) == null) {
return false;
} else if (!(pairs.get(value) instanceof Boolean)) {
errors.add(value + " does not contain a valid boolean value");
return false;
}
}
return true;
}
在想这样的事情:
Stream<Object> e = Stream.of(values).map(pairs::get);
但是我怎样才能让它从这个流中返回不同的布尔值呢?
解决方案
如果您只想过滤掉pairs
地图中存在的布尔值,您可以应用过滤器功能:
Stream.of(values).filter(value -> pairs.get(value) != null && pairs.get(value) instanceof Boolean)
或者,如果您想实际返回true
和false
值,可以使用 map:
return Stream.of(values).allMatch(value -> {
if (pairs.get(value) == null) {
return false;
}
if ((pairs.get(value) instanceof Boolean)) {
return true;
}
errors.add(value + " does not contain a valid boolean value");
return false;
});
推荐阅读
- java - 如何修复 Maven 项目中的“BanDuplicateClasses failed”
- reactjs - 如何创建全局通知?
- ios - 如何使分组的 ListView 标题在 iOS 中正确浮动(不粘)?
- python - 两个列表乘积的最大和
- html - Squarespace 网站上的视差抖动
- ios - 为什么 iOS 模拟器会在 ALL CAPS 中显示标签栏标签,然后切换回 Title Case?
- sql - 从日期列表中总结日期
- json - 如何解决prometheus ktext format parsing error in line 1: expected float as value, got "41584\r"
- python - 我有两个 json 文档,我需要比较第一个对象的键是否存在于使用 python 的第二个对象中。它们都是嵌套的
- javascript - 将 FileReader 中的 img 添加到最新课程 | FileReader 在循环后执行