das folgende Beispiel betrachtet, das in einem List
das maximale Element druckt:Die Wahl zwischen Strom und Sammlungen API
List<Integer> list = Arrays.asList(1,4,3,9,7,4,8);
list.stream().max(Comparator.naturalOrder()).ifPresent(System.out::println);
Das gleiche Ziel auch die Collections.max
Methode erreicht werden kann:
System.out.println(Collections.max(list));
Die oben Code ist nicht nur kürzer, sondern auch sauberer zu lesen (meiner Meinung nach). Es gibt ähnliche Beispiele, die in den Sinn kommen, wie die Verwendung von binarySearch
gegenüber filter
, die in Verbindung mit findAny
verwendet wird.
Ich verstehe, dass Stream
eine unendliche Pipeline im Gegensatz zu Collection
sein kann, die durch den verfügbaren Speicher für die JVM begrenzt ist. Dies wäre mein Kriterium für die Entscheidung, ob eine Stream
oder die Collections
API verwendet werden soll. Gibt es andere Gründe für die Wahl Stream
über die Collections
API (z. B. Leistung). Allgemeiner, ist dies der einzige Grund, Stream
über ältere API zu wählen, die die Arbeit auf eine sauberere und kürzere Weise erledigen kann?
Fragen Sie nur nach dieser spezifischen Methode? –
Wenn Ihr einziger Wert darin besteht, den 'max' -Wert von der Liste zu bekommen, ist die' Collections'-Methode die richtige Wahl. – GriffeyDog
Auch das 'Optional' vs' NoSuchElementException' Verhalten. –