2017-02-28 29 views
25

Z Collection wszystko jest jasne, ale co następuje:Najprostszy sposób na utworzenie strumienia z obiektu Java?

Jest object z count() metody i sposobu getPart(int i). Więc wyodrębnianie obiektów prowadzi do następującego kodu boilerplate:

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

Czy istnieje standardowy sposób przejść tylko 2 producentów: () -> object.count() i (int i) -> object.getPart(i) aby utworzyć strumień? Tak:

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

[Pytanie] (http://stackoverflow.com/questions/30685623/how-to-implement-a-streamt-for-java) wydaje się podobne, może może pomóc – Moira

+2

Dlaczego nie utworzysz 'object.getParts()', które może zamiast tego zwrócić listę 'Part'? Ponieważ z twojego kodu wydaje się, że 'obiekt' ma wszystkie części. –

+3

Ponieważ nie ma metody "getParts". :) – Cherry

Odpowiedz

41

Spróbuj tego:

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

Straciłem informację, ile razy rozwiązanie "jak utworzyć strumień z tej dziwnej rzeczy" - problemem było rozwiązanie "IntStream"! :RE –