Das Nichtbestehen der Bestellung ist eine Eigenschaft von Map
, die das Ergebnis speichert. Wenn Sie ein bestimmtes Verhalten Map
benötigen, müssen Sie fordert eine bestimmte Map
-Implementierung an . Z.B. LinkedHashMap
behält den Anzeigenauftrag bei:
Übrigens gibt es keinen Grund, den Inhalt von mapList
vor dem Erstellen von Stream
in ein Array zu kopieren. Sie können einfach mapList.stream()
aufrufen, um eine passende Stream
zu erhalten.
Außerdem ist Collectors.mapping((Map<String, Object> p) -> p, toList())
veraltet. p->p
ist eine Identitätszuordnung, daher gibt es keinen Grund, mapping
überhaupt anzufordern:
Aber auch das GroupingKey
ist veraltet. Es enthält im Grunde eine List
der Werte, so dass Sie einfach einen List
als Schlüssel an erster Stelle verwenden könnten. List
s implementieren hashCode
und equals
entsprechend (aber Sie dürfen diese Schlüssel List
s nachher nicht ändern ).
Basiert auf @ Holgers großer Antwort. Ich poste dies, um denen zu helfen, die die Reihenfolge nach der Gruppierung beibehalten möchten, sowie das Mapping ändern.
Lassen Sie uns vereinfachen und annehmen, wir haben eine Liste von Personen (int age, String name, String adressen ... etc) und wir wollen die Namen nach Alter gruppiert werden, wobei die Reihenfolge eingehalten wird:
%Vor%Tags und Links java-8 java-stream grouping collect