mam String
i HashMap
jak poniżej kodów:Wymień String o wartości HashMap używając Java 8 strumień
Map<String, String> map = new HashMap<>();
map.put("ABC", "123");
String test = "helloABC";
map.forEach((key, value) -> {
test = test.replaceAll(key, value);
});
i staram się zastąpić ciąg z wartościami HashMap
, ale to nie działa, ponieważ test
jest ostateczna i nie można ponownie przydzielić w treści forEach
.
Więc czy są jakieś rozwiązania, które zastąpią String
z HashMap
wykorzystujące Java 8 Stream API?
'foreach()' nie jest zsynchronizowany. Twój kod nie kompiluje się, ponieważ nie możesz mieć efektu ubocznego na 'wiadomość' od wewnątrz wyrażenia lambda. Nawet gdybyś mógł, wszystko, co dostałeś, to 'wiadomość' zawierająca ostatnią zamianę' testu' na ostatni wpis mapy na mapie. Które prawdopodobnie nie jest tym, czego chcesz. Również dlatego, że "ostatni wpis na mapie" jest niedeterministyczny dla 'HashMap'. – Ralf
OK Dzięki, mam to. ale co mam zrobić, aby uzyskać całą zawartość testu, która już została zastąpiona? –