2017-02-28 4 views
25

Mit Collection ist alles klar, aber was ist mit dem folgenden:Einfachste Möglichkeit, einen Stream von einem Java-Objekt zu erstellen?

Es eine object mit einem count() Verfahren ist und ein getPart(int i) Verfahren. So führt alle Objekte Extrahieren der folgenden Standardcode:

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

Gibt es eine Standardmethode nur 2 Erzeuger weitergeben müssen: () -> object.count() und (int i) -> object.getPart(i) einen Strom zu erzeugen? Wie folgt aus:

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

[Diese Frage] (http://stackoverflow.com/questions/30685623/how-to-implement-a-streamt-for-java) scheint ähnlich, vielleicht kann es helfen – Moira

+2

Warum erstellen Sie nicht 'object.getParts()', die stattdessen eine Liste von 'Part' zurückgeben kann? Denn von Ihrem Code aus scheint es, dass "Objekt" alle Teile hat. –

+3

Weil es keine Methode 'getParts' gibt. :) – Cherry

Antwort

41

Versuchen Sie folgendes:

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

Ich habe den Überblick verloren, wie oft die Lösung für ein "Wie erstelle ich einen Stream aus diesem seltsamen Ding" -Problem war eine "IntStream" -Lösung! : D –

Verwandte Themen