我必须创建排序方法,使用映射参数和 lambda 表达式调用。该方法返回作为第一个参数传递的任何映射的排序版本,排序顺序由作为第二个参数给出的 lambda 表达式确定。
我创建了类似的东西(无法正常工作):
public Map sorted(Map map, Function<Set> funct){
System.out.println(map.entrySet()
.stream()
.sorted((Comparator) funct)
.collect(Collectors.toList()));
return null;
}
有什么想法吗?
感谢您的帮助;)
最佳答案
如果您想要一个TreeMap
排序 map ,并且假设比较器按Key
排序,它可能看起来像这样:
public static <K, V> TreeMap<K, V> sorted(Map<K, V> map, Comparator<? super K> cmp) {
return map.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
Map.Entry::getValue,
(left, right) -> left,
() -> new TreeMap<K, V>(cmp)));
}
它的调用看起来像这样:
System.out.println(sorted(map, Comparator.naturalOrder()));
关于java - 将 lambda 作为方法参数传递并排序映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43607207/