我有以下方法来映射地图中的值:
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的方法是什么?
发布于 2018-11-06 15:50:33
可以将其收集到实现TreeMap的SortedMap中。
public static <X, Y, Z> SortedMap<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)),
(v1, v2) -> {
return v1;
}, TreeMap::new));
}发布于 2018-11-07 12:40:45
无流的Al交替溶液:
SortedMap<X, Z> output = new TreeMap<>();
input.forEach((x, y) -> output.put(x, function.apply(y)));这种方法不会在密钥集上迭代,以便稍后对每个键执行查找。相反,它直接迭代映射,并将每个键值对放在output SortedMap中,使用function以前对值进行转换。海事组织,它也更加简洁和可读性更强。
https://stackoverflow.com/questions/53175186
复制相似问题