Java 在SortedMap中映射值
我使用以下方法在映射中映射值:Java 在SortedMap中映射值,java,collections,Java,Collections,我使用以下方法在映射中映射值: 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(),
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))));
}
publicstaticmap-transformValues(Map您可以收集到一个实现SortedMap
的TreeMap
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));
}
public static SortedMap transformValues(MapAl无流替代解决方案:
SortedMap<X, Z> output = new TreeMap<>();
input.forEach((x, y) -> output.put(x, function.apply(y)));
SortedMap输出=新树映射();
input.forEach((x,y)->output.put(x,function.apply(y));
这种方法不会在键集上迭代,以便以后对每个键执行查找。相反,它直接迭代映射,并将每个键值对放入输出SortedMap
,使用函数
预先转换值。在我看来,它也更简洁易读。收集器
utility类提供了一个toMap
重载,允许您使用供应商
为所需的映射
类型进行参数化-请参阅。如何复制密钥?参数是映射,函数是标识。
SortedMap<X, Z> output = new TreeMap<>();
input.forEach((x, y) -> output.put(x, function.apply(y)));