掌握Collectors.toMap的关键

时间:2017-08-25 00:11:51

标签: java collectors

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的参数,但我只是不想重复两次相同的函数。

1 个答案:

答案 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())));