Ich habe eine Frage zu Lambda-Ausdrücken in Java 8.
Betrachten Sie die folgende Message
-Klasse:
, das die Schnittstelle MessageBase
implementiert. Ich speichere Objekte der Klasse Message
in einem TreeMap
- Map<Long, Message> messages
. Der Schlüssel ist ein Zeitstempel und der Wert ist ein Message
-Objekt. Ich muss alle TreeMap
Einträge nach Autor finden, was ein Feld der Klasse Message
ist. Ich versuche dies mit Lambda-Ausdrücken zu tun.
Hier ist mein Code:
%Vor%Mit diesem Code kann ich nur einen Eintrag bekommen. Können Sie mir helfen, eine Liste aller Einträge zu erhalten, die den Filter bestehen?
Ein anderer Weg wäre, alle Message
Instanzen nach Autor zu gruppieren:
Dies wird eine Liste von Nachrichten für jeden Autor erstellen.
Wenn Sie auch den Schlüssel der ursprünglichen Map nach Autor gruppieren möchten, können Sie eine überladene Version der Methode groupingBy()
verwenden, mit der Sie die ursprünglichen Einträge beibehalten können:
Hier wird eine Karte von Karten erstellt und die Einträge werden gestreamt (anstatt nur die Werte, wie im ersten Beispiel). Die erste Map ist eine Gruppierung nach Autor, während die zweite Map eine Submap der ursprünglichen Map ist, die nur die Einträge enthält, die dem entsprechenden Autor entsprechen.
Tags und Links java java-8 lambda collections java-stream