Wie kann ich im Java8-Funktionsstil die Werte einem bereits vorhandenen Schlüsselwertpaar zuordnen?

8

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?

    
parag mittal 01.12.2015, 13:29
quelle

2 Antworten

11

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.

    
Alexis C. 01.12.2015, 13:54
quelle
0

Dies kann durch Verwendung des ternären Operators vereinfacht werden. Sie brauchen die if-else-Anweisung nicht wirklich

%Vor%     
dkulkarni 01.12.2015 13:39
quelle

Tags und Links