【发布时间】:2016-10-25 15:00:25
【问题描述】:
我有一个名为 map 的 HashMap,它存储 Characters 作为键,Integers 作为值,然后我使用以下代码将其存储到称为条目的 ArrayList 中:
Set<Entry<Character, Integer>> s = map.entrySet();
ArrayList<Entry<Character, Integer>> entries = new ArrayList<>(s);
现在我正在尝试根据 Integer 值而不是键对这些条目进行排序。我尝试使用 lambda 表达式来实现 Comparator 接口,但它不起作用。这是我的代码:
Collections.sort(sortedEntries, (sortedEntries.get(0), sortedEntries.get(1)) -> {
sortedEntries.get(0).getValue().compareTo(sortedEntries.get(1).getValue())
});
这些是我得到的错误:
这一行有多个标记
语法错误,插入“)”完成表达式
Collections类型中的sort(List, Comparator)方法不适用于参数(ArrayList>, Map.Entry, Map.Entry)
标记“->”的语法错误,;预计
【问题讨论】:
-
表达式 (x,y)->(something) 不依赖于它之前的任何东西。它不应该引用
sortedEntries。变量的名称只是为了让您可以在 lambda 表达式的主体中使用它们,并且它们的类型是比较器所期望的。 -
如果你不理解 lambda,为什么还要使用它们?
标签: java arraylist comparator