gpt4 book ai didi

java - 给定一个函数和一组参数,是否有一种简单的方法来创建反向映射?

转载 作者:行者123 更新时间:2023-11-30 08:18:03 25 4
gpt4 key购买 nike

假设我们有一个将 X 映射到 Y 的纯方法:

public abstract Y map(X x);

是否有任何简短的方法来创建从函数到映射到这些函数的参数集的反向映射?即创建一个Map<Y, Set<X>>来自Set<X> .简而言之,我指的是比直接方式更简洁的库解决方案:

public Map<Y, Set<X>> reverseMapping(Set<X> arguments) {
Map<Y, Set<X>> answer = new HashMap<>();
arguments.forEach(x->{
Y y = map(x);
if (!answer.containsKey(y)) {
answer.put(y, new HashSet<>());
}
answer.get(y).put(x);
});
return answer;
}

Java 8 中添加了很多函数式编程特性,我认为可能有我需要的。

最佳答案

对于此类任务,有一个直接的解决方案, Collectors.groupingBy .虽然单参数版本产生 Map<Y,List<X> , 你可以 combine it with another Collector 生产Set

public Map<Y, Set<X>> reverseMapping(Set<X> arguments) {
return arguments.stream()
.collect(Collectors.groupingBy(this::map, Collectors.toSet()));
}
public abstract Y map(X x);

关于java - 给定一个函数和一组参数,是否有一种简单的方法来创建反向映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27800480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com