java - 将 lambda 作为方法参数传递并排序映射

标签 java sorting lambda functional-programming java-8


我必须创建排序方法,使用映射参数和 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/

相关文章:

python - 嵌套元组列表的高级排序标准

java - 交换元素

java - 带有奇怪 NullPointerException 的建议

C排序解释和麻烦

python - 对字符向量进行排序时的不同结果

c++ - 了解错误 C2664 : Cannot convert argument 1

.net - 如何在不使用字符串名称的情况下引发 PropertyChanged 事件

c# - 使用 C# 将 Lambda 表达式转换为 SQL UPDATE 语句

java - PHP中JSON POST请求解析

java - 无法解析的日期 : "1/29/2014 11:45:00 AM" - Android