Ich habe eine Karte:
%Vor%Nun möchte ich der Karte wie folgt neue Schlüsselwertpaare hinzufügen:
%Vor%Wie kann ich das mit Java8 funktionalem Stil tun?
Sie können computeIfAbsent
verwenden.
Wenn das Mapping nicht vorhanden ist, erstellen Sie einfach einen, indem Sie den Schlüssel einer neuen leeren Liste zuordnen und dann den Wert hinzufügen.
%Vor% Wie die Dokumentation angibt, gibt es den aktuellen (vorhandenen oder berechneten) Wert zurück, der dem angegebenen Schlüssel zugeordnet ist, damit Sie den Aufruf mit ArrayList#add
verketten können. Dies setzt natürlich voraus, dass die Werte in der Originalkarte keine Listen fester Größe sind (ich weiß nicht, wie Sie sie ausgefüllt haben) ...
Übrigens, wenn Sie Zugriff auf die ursprüngliche Datenquelle haben, würde ich den Stream daraus entnehmen und Collectors.groupingBy
direkt verwenden.
Tags und Links java java-8 dictionary