У меня есть Map<String, Double>
, и я хочу умножить все значения на карте, скажем, на 2, но сохранить нулевые значения как нулевые.
Я, очевидно, могу использовать цикл for для этого, но мне было интересно, есть ли более чистый способ сделать это?
Map<String, Double> someMap = someMapFunction();
Map<String, Double> adjustedMap = new Hashmap<>();
if (someMap != null) {
for (Map.Entry<String,Double> pair : someMap.entryset()) {
if (pair.getValue() == null) {
adjustedMap.put(pair.getKey(), pair.getValue());
} else {
adjustedMap.put(pair.getKey(), pair.getValue()*2)
}
}
}
Также иногда карта, возвращаемая someMapFunction
, являетсянеизменяемая карта, поэтому это не может быть сделано на месте с помощью Map.replaceAll
.Я не мог придумать потоковое решение, которое было бы чище.