2016-04-09 24 views
5

Có phải tùy chọn 1 hoặc tùy chọn 2 dưới đây đúng hay không (ví dụ: tùy chọn ưa thích so với phương pháp kia) hoặc chúng tương đương?Java 8 Streams Filter Ý định đánh giá lười biếng

Lựa chọn 1

collectionOfThings. 
    stream(). 
    filter(thing -> thing.condition1() && thing.condition2()) 

hoặc

Lựa chọn 2

collectionOfThings 
    .stream() 
    .filter(thing -> thing.condition1()) 
    .filter(thing -> thing.condition2()) 
+0

Câu trả lời cho câu hỏi trước không chính xác. Tôi không phải là một chuyên gia đánh giá, nhưng các bài kiểm tra của riêng tôi cho thấy Option1 có thể hoạt động tốt hơn đáng kể. Tôi sẽ đăng mã thử nghiệm của mình lên câu hỏi khác, và tôi sẽ đánh giá cao sự xem xét của bất kỳ ai về những phát hiện của tôi. –

Trả lời

8

Thực hiện việc lập, điều thứ hai nên

collectionOfThings. 
    stream(). 
    filter(thing -> thing.condition1()). 
    filter(thing -> thing.condition2()) 

Cả hai đều tương đương nhau. Đôi khi người ta dễ đọc hơn người kia.

Một cách khác để viết thứ hai sẽ được sử dụng một tài liệu tham khảo phương pháp:

collectionOfThings 
    .stream() 
    .filter(Thing::condition1) 
    .filter(Thing::condition2) 

Cũng lưu ý rằng quy ước là đặt dấu chấm ở đầu dòng chứ không phải là cuối cùng, như bạn sẽ viết một danh sách có dấu đầu dòng.

+0

Cảm ơn! Tôi đã điều chỉnh ví dụ để sửa lỗi. –

Các vấn đề liên quan