2017-02-28 17 views
25

Với Collection mọi thứ đều rõ ràng, nhưng những gì các câu hỏi sau:Cách đơn giản nhất để tạo luồng từ một đối tượng Java?

Có một object với một phương pháp count() và một phương pháp getPart(int i). Vì vậy, giải nén tất cả các đối tượng dẫn đến mã boilerplate sau:

List<Part> result = new ArrayList<Part>(); 
for (int i = 0, i < object.count(), i++) { 
    result.add(object.getPart(i));   
} 
return result.stream(); 

Có cách nào tiêu chuẩn để vượt qua chỉ 2 nhà sản xuất: () -> object.count()(int i) -> object.getPart(i) để tạo ra một dòng? Như thế này:

SomeUtil.stream(object::count, object::getPart); 
+0

[Câu hỏi này] (http://stackoverflow.com/questions/30685623/how-to-implement-a-streamt-for-java) có vẻ như tương tự, có lẽ nó có thể giúp – Moira

+2

Tại sao bạn không tạo 'object.getParts()' có thể trả về danh sách của 'Part' thay thế? Bởi vì từ mã của bạn có vẻ như 'đối tượng' có tất cả các phần. –

+3

Vì không có phương thức 'getParts'. :) – Cherry

Trả lời

41

Hãy thử điều này:

IntStream.range(0, object.count()).mapToObj(object::getPart); 
+4

Tôi đã mất đi bao nhiêu lần giải pháp cho giải pháp "làm cách nào để tạo luồng từ điều kỳ quặc" này là giải pháp 'IntStream'! : D –

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