Nói rằng tôi có đoạn mã sauSử dụng nhiều chức năng bản đồ so với một tuyên bố khối trong một bản đồ trong một dòng java
data.stream()
.map(x -> {
Object a = maybeReturnsNull(x);
return a == null ? defaultValue : a;
})
Tôi có một số chức năng có thể được trở về null
, và tôi áp dụng nó cho một yếu tố của luồng. Sau đó tôi muốn đảm bảo rằng bất kỳ kết quả null
nào được thay đổi thành một số giá trị mặc định thay thế. Có sự khác biệt đáng kể nào giữa việc sử dụng hai bản đồ như trong ví dụ sau, so với sử dụng ví dụ trước xác định biến số trợ giúp a
và sử dụng khối mã trong biểu thức lambda?
data.stream()
.map(x -> maybeReturnsNull(x))
.map(x -> x == null ? defaultValue : x)
Có hay không để tránh sử dụng câu lệnh chặn có hàm lambda?
hoặc '.map (:: maybeReturnsNull này) .map (Không bắt buộc :: ofNullable) .map (o -> o.orElse (defaultValue))' – assylias
@assylias: ngay cả khi nó không tạo sự khác biệt về hiệu suất, tôi nghĩ một '.map (x -> Optional.ofNullable (có thểReturnsNull (x)). hoặcElse (defaultValue))' nên được ưu tiên hơn ba bước ánh xạ tại đây. Nhưng mà, nó vẫn là vấn đề về hương vị… – Holger