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;
}
我有一个很好用的方法。这是它的样子。
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;
}