Comparator是仅与SortedSet一起使用还是可以与Collection中的其他接口一起使用?

时间:2015-09-16 05:13:16

标签: java

任何人都可以用例子来解释。到目前为止我看到的例子只包括SortedSet(使用TreeSet实现)和List(使用ArrayList实现)。我想知道我们是否可以使用set,map ...如果是这样的话?

2 个答案:

答案 0 :(得分:1)

当然它用于其他课程!例如,Arrays类有一个sort方法,它接受Comparator作为参数。这是文档:

http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort(T[],%20int,%20int,%20java.util.Comparator)

实际上,对于这种类型的东西,你可以在线搜索,你可以看到接受Comparator作为参数的方法。我认为大多数集合类都有。

您还询问了如何使用带有集合和贴图的比较器。答案是......(鼓卷)在文档中!只需谷歌搜索它,你就会找到答案!

答案 1 :(得分:0)

比较器在Java API的许多地方使用。

例如,Stream类在Comparatormin方法中使用max根据给定比较器返回流中的最小或最大项。

例如:

interface Person {
    int getAge();
}

List<Person> people;
Optional<Person> oldestPerson = people.stream()
    .max(Comparator.comparingInt(Person::getAge));

使用键值上的比较器查找地图键的示例:

Map<String, Integer> employeeNameSalaryMap;
Optional<String> lowestPaidPerson = employeeNameSalaryMap
    .valueSet().stream()
    .min(Map.Entry.comparingByValue())
    .map(Map.Entry::getKey);