Wenn Ihr Grund für die Iteration durch die Map
ist es, eine Operation mit dem Wert durchzuführen und das Ergebnis in einen Map
. Ich empfehle die Verwendung des transform
-Methoden im Google Guava Maps
Klasse.
import com.google.common.collect.Maps;
Nachdem Sie die Maps
zu Ihren Importen hinzufügen, können Sie Maps.transformValues
y Maps.transformEntries
auf Ihren Karten, etwa so:
public void transformMap(){
Map<String, Integer> map = new HashMap<>();
map.put("a", 2);
map.put("b", 4);
Map<String, Integer> result = Maps.transformValues(map, num -> num * 2);
result.forEach((key, val) -> print(key, Integer.toString(val)));
// key=a,value=4
// key=b,value=8
Map<String, String> result2 = Maps.transformEntries(map, (key, value) -> value + "[" + key + "]");
result2.forEach(this::print);
// key=a,value=2[a]
// key=b,value=4[b]
}
private void print(String key, String val){
System.out.println("key=" + key + ",value=" + val);
}
46 Stimmen
In Java 8 mit Lambda-Ausdruck: stackoverflow.com/a/25616206/1503859
5 Stimmen
Java 8: stackoverflow.com/questions/46898/