Java 11 Lambda - 检查每个对象,满足第一个条件时 return 为真,否则 return 为假

Java 11 Lambda - check each object, return true when the first condition is met, else return false

我有一个很好用的方法。这是它的样子。

private boolean roomWithMoreThanTenFurnitures(Building building) {
if (building != null && building.hasRooms()) {
    for (Room room : building.getRooms()) {
        if (room.getFurnitures.size() > 10) {
            return true;
        }
    }   
}
return false;
}

我想将它切换到 Lambda。 in came uo with the shell, 但我不确定如何填写 if (condition) return true or return false outside.

building.getRooms().forEach(room -> {
//??
});

您不能这样做 - foreach 用于对每个 collection/stream 元素执行一些操作,而不是用于过滤它们或映射到结果

您需要例如anyMatch 方法 - 例如

building.getRooms().stream().anyMatch(room -> room.getFurnitures.size() > 10)

你可以这样做。 Returns false 根据初始条件,然后流式传输房间。这假定房间可以流式传输(例如列表)。如果它们是一个数组,您将需要执行类似于 Arrays.stream(building.getRooms())

的操作
private boolean roomWithMoreThanTenFurnitures(Building building) {
    if (building != null && building.hasRooms()) {
        return building.getRooms().stream()
                .anyMatch(room -> room.getFurnitures.size() > 10);
                
    }
    return false;
}