有没有办法让这个代码采用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
价值,你可以使用地图:
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;
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句