Không có câu lệnh "if", trừ khi bạn giải thích lý do tại sao nó không thể thực hiện mà không có.Java 8 forEach chỉ áp dụng cho một số?
Tôi thấy mình chỉ có thể hoạt động trên luồng bao xa. Tôi có phiền toái này:
List<Cube> revised =
cubes.filter(p)
.map(c -> f(c))
.map(c -> {
if(c.prop()) {
c.addComment(comment);
}
return c;
})
.collect(Collectors.toList());
ý tưởng tốt nhất của tôi cho làm thế nào để làm điều này mà không có "nếu" là
List<Cube> revised =
cubes.filter(p)
.map(c -> f(c));
revised
.filter(Cube::prop)
.forEach(c -> c.addComment(comment)); // can also map still
Có cách nào để làm điều này chỉ trong một chuỗi? Chi nhánh về cơ bản phải xảy ra trong luồng nếu có. Phương thức như forSome(predicate, lambda)
sẽ hoạt động.
Không muốn "cuộn của riêng tôi" bất kỳ thứ gì. Tôi có thể sử dụng một "if" nhưng tôi đang cố gắng tìm hiểu cách thức thể hiện phong cách chức năng.
là Optional.ifPresent thể chấp nhận được ? – VGR
@VGR chính xác suy nghĩ của tôi :) – Eugene
[Collectors.partitioningBy] (https://stackoverflow.com/a/30110890/3688648) có thể giúp nếu bạn muốn "phát" luồng của mình bằng 'Cube :: prop' – Felk