我可以通过以下方法在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的方法是什么?
答案 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,它也更简洁易读。