SortedMap中的地图值

时间:2018-11-06 15:40:59

标签: java collections

我可以通过以下方法在map中映射值:

public static <X, Y, Z> Map<X, Z> transformValues(Map<? extends X, ? extends Y> input, Function<Y, Z> function) {
    return input.keySet().stream()
      .collect(Collectors.toMap(Function.identity(),
        key -> function.apply(input.get(key))));
  }

此处建议:https://stackoverflow.com/a/25905196/411965

我想创建与SortedMap类似的方法:

public static <X, Y, Z> SortedMap<X, Z> transformValues(SortedMap<? extends X, ? extends Y> input, Function<Y, Z> function)

使用Java 8的方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以收集到实现TreeMap的{​​{1}}中。

SortedMap

答案 1 :(得分:1)

没有流的所有备用解决方案:

SortedMap<X, Z> output = new TreeMap<>();
input.forEach((x, y) -> output.put(x, function.apply(y)));

此方法不会遍历键集以稍后对每个键执行查找。取而代之的是,直接迭代映射并将每个键值对放入output SortedMap中,使用function预先转换值。 IMO,它也更简洁易读。