'Collections.sort(interval,new Comparator <interval>(){[...]'是什么意思?

时间:2016-11-23 23:21:37

标签: java sorting

我遇到了一种合并重叠间隔的方法。它有一部分我不明白:

Collections.sort(intervals, new Comparator<Interval>() {
    @Override
    public int compare(Interval i1, Interval i2) {
        return Integer.compare(i1.start, i2.start);
    }
});

它究竟在做什么并返回?

1 个答案:

答案 0 :(得分:1)

它做什么: java中的Collections类有一个带签名的方法 sort(List<T> list, Comparator<? super T> c)

第一个参数是您要排序的列表,第二个参数是比较器。

new Comparator<Interval>() {
        @Override
        public int compare(Interval i1, Interval i2) {
            return Integer.compare(i1.start, i2.start);
        }
    }

这是一个简短的方法(inner class),否则你需要编写自己的实现Comparator的类。

简而言之,这可能会返回-1, 0, +1

您可以决定何时返回哪个值。

在这种情况下,您拨打Integer.compare,与-1 (i1 < i2) | 0 (i1==i2) | +1 (i1>i2)进行比较。

Collection.sort使用此信息对列表进行排序,它实际上不返回任何内容。

Comparators

的示例

编辑:当您比较{{1}的开头时,订单将为{(1,9),(2,4),(4,7),(6,8)} }和I1

This接受的答案可能很有意思。