String ersetzen Mit hashmap-Wert mit Java 8 Stream

8

Ich habe String und HashMap wie unter codes:

%Vor%

und ich versuche, die Zeichenfolge durch die HashMap -Werte zu ersetzen, aber dies funktioniert nicht, weil test endgültig ist und nicht im Body von forEach neu zugewiesen werden kann.

Gibt es also Lösungen, um String durch HashMap mit Java 8 Stream API zu ersetzen?

    
Chhea Vanrin 23.03.2016, 07:54
quelle

2 Antworten

3

Da dies nicht nur mithilfe von forEach() ( message muss effektiv final) erfolgen kann, könnte ein endgültiger Container (zB List ) erstellt werden, der ein einzelnes String speichert, das neu geschrieben wird:

%Vor%

Beachten Sie, dass ich replaceAll() in replace() weil früher mit regex gearbeitet wurde, aber nach deinem code zu urteilen, musst du durch string ersetzt werden (mach dir keine sorgen, trotz verwirrendem name ersetzt er auch all Vorkommen).

Wenn Sie genau Stream API möchten, können Sie reduce() :

%Vor%

Berücksichtigen Sie jedoch, dass eine solche Reduktion nur in seriellem (nicht parallelem) Stream richtig funktioniert , wobei die Combiner-Funktion nie aufgerufen wird (kann also irgendeine sein).

    
Alex Salauyou 23.03.2016, 08:08
quelle
3

Diese Art von Problem ist für die Stream-API nicht gut geeignet. Die gegenwärtige Inkarnation von Streams ist hauptsächlich auf Aufgaben gerichtet, die parallel gemacht werden können. Vielleicht wird Unterstützung für diese Art von Operation in der Zukunft hinzugefügt (siehe Ссылка ).

Ein Streams-basierter Ansatz, den Sie vielleicht interessant finden, ist das Reduzieren von Funktionen statt der Zeichenfolge:

%Vor%     
Misha 23.03.2016 09:05
quelle

Tags und Links