Map<String, Map<String, String>> myValues;
myValues.entrySet().stream.collect(
Collectors.toMap(entry -> getActualKey(entry.getKey()),
entry -> doCalculation(entry.getValue()))
);
我有办法在doCalculation函数中获取Key吗?我知道我可以再次传递getActualKey(entry.getKey())
作为doCalculation的参数,但我只是不想重复两次相同的函数。
答案 0 :(得分:4)
您可以使用派生密钥将条目映射到新的中间条目,然后将值对传递给doCalculation()
:
myValues.entrySet()
.stream()
.map(e -> new SimpleEntry<>(getActualKey(e.getKey()), e.getValue()))
.collect(Collectors.toMap(e -> e.getKey(), e -> doCalculation(e.getKey(), e.getValue())));