在java中,implements Comparator是如何工作的?
- 下面是在java中,implements Comparator是如何工作的?,java,sorting,comparator,Java,Sorting,Comparator,- 下面是比较器工作原理的示例 我的问题是:当方法比较(对象o1,对象o2)时,对象类型o1和o2在哪里?我不知道是否看到任何类调用compare()方法。我只看到Collections.sort(al,newnamecomparator()) 请解释一下,谢谢。当您调用Collections.sort对任何集合进行排序并传递comparator引用时,底层排序方法会调用compare方法来决定两个对象之间哪个更大。此过程根据排序策略进行 Java代码参考:以下是链接: 您可以调用Collect
比较器
工作原理的示例
我的问题是:当方法比较(对象o1,对象o2)
时,对象类型o1
和o2
在哪里?我不知道是否看到任何类调用compare()方法。我只看到Collections.sort(al,newnamecomparator())
请解释一下,谢谢。当您调用Collections.sort对任何集合进行排序并传递comparator引用时,底层排序方法会调用compare方法来决定两个对象之间哪个更大。此过程根据排序策略进行
Java代码参考:以下是链接:
您可以调用Collections.sort(collectionReference、comparatorReference)
第一个在内部调用:list.sort(comparatorReference)李>
list.sort在内部将列表转换为数组并调用
Object[]a=this.toArray();
sort(a,(Comparator)comparatorReference)代码>
Arrays.sort具有以下逻辑:
public static <T> void sort(T[] a, Comparator<? super T> c) {
if (c == null) {
sort(a);
} else {
if (LegacyMergeSort.userRequested)
legacyMergeSort(a, c);
else
TimSort.sort(a, 0, a.length, c, null, 0, 0);
}
}
publicstaticvoidsort(T[]a,comparatorsort
例程将对列表中的对象调用compare几次,直到对列表进行排序
if (length < INSERTIONSORT_THRESHOLD) {
for (int i=low; i<high; i++)
for (int j=i; j>low && c.compare(dest[j-1], dest[j])>0; j--)
swap(dest, j, j-1);
return;
}