[英]How to properly do nested iteration w/ Java 8 features such as stream, forEach etc?
重写这样的东西的优雅方法是什么
private boolean containsNulls(HashBasedTable table) {
for(Object column : table.columnKeySet()) {
for(Object row : table.rowKeySet()) {
if(table.get(row, column) == null) {
return true;
}
}
}
return false;
}
使用Java 8功能?
我正在寻找类似的东西
tableCells.stream().filter(cell -> cell.getValue() == null)
.findFirst().orElse(null);
(根据java中lambda forEach()的返回),但是将其作为嵌套循环编写时遇到了一些麻烦。
建议?
你可以2嵌套anyMatch():
private boolean containsNulls(HashBasedTable table) {
return table.columnKeySet()
.stream()
.anyMatch(column -> table.rowKeySet()
.stream()
.anyMatch(row -> table.get(row, column) == null)
);
}
return table.columnKeySet()
.stream()
.flatMap(x -> table.rowKeySet().stream().map(y -> new Object[]{x,y}))
.anyMatch(x -> table.get(x[1], x[0]) == null)
我没有编译这个,所以我希望不要错过一个括号...
请注意,您需要最新的java-8才能真正实现此功能,就像您的循环一样,请阅读此内容以获取详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.