首页 > 解决方案 > 如何正确地使用 Java 8 功能(如流、forEach 等)进行嵌套迭代?

问题描述

重写这样的东西的优雅方法是什么

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);

(每个Return from lambda forEach() in java)但是在将其编写为嵌套循环时遇到了一些麻烦。

建议?

标签: javajava-8java-stream

解决方案


你可以2嵌套anyMatch():

private boolean containsNulls(HashBasedTable table) {
    return table.columnKeySet()
        .stream()
        .anyMatch(column -> table.rowKeySet()
            .stream()
            .anyMatch(row -> table.get(row, column) == null)
        );
}

推荐阅读