Ich habe eine List<Hotel>
, jede Hotel
haben eine BigDecimal minSellingPrice
, ich möchte die Hotel
mit dem Mindestverkaufspreis bekommen.Liste stream, erhalten einzelteile mit dem niedrigsten preis
Ich konnte dies
hotels.stream().min((h1, h2) -> h1.getMinSellingPrice().compareTo(h2.getMinSellingPrice())).get()
Aber was, wenn 3 Hotels haben hat den Mindestverkaufspreis gemeinsam, so dass die Liste 50 Hotels über diesen Code in der Liste erreichen, niedrigste minSellingPrice
100, 3 Hotels von 50 haben eine minSellingPrice
von 100.
Wie kann ich eine Liste dieser 3 Hotels bekommen, damit ich auf ihnen operieren kann? Das einzige, woran ich gedacht habe, ist, den Mindestpreis über map
und min
zu bekommen und dann die Liste nach den Artikeln abzufragen, die den niedrigsten Preis haben, aber das hört sich nicht gut an.
Filter 'hotels.stream()' für den Wert, den Sie oben erhalten. Technisch müssen Sie nur einmal traversieren, da hier kein Backtracking erforderlich ist. Vielleicht erstellen Sie einen benutzerdefinierten Filter, der zu einer anderen Liste hinzugefügt wird, wenn mehrere Vorkommen gefunden werden. –
Siehe ["Wie erzwinge max() ALLE Höchstwerte in einem Java Stream zurückzugeben?"] (Http://stackoverflow.com/q/29334404/2711488), die Logik für Minimum ist die gleiche ... – Holger