Collections.sort(ar, new Comparator<Intervals>() { @Override public int compare(Intervals o1, Intervals o2) { return (Integer.valueOf(o1.getEnd())) .compareTo(Integer.valueOf(o2.getEnd())); } });
大家好,我在Java中有上面的代码。在这里,ar是一个列表,Intervals是一个具有2个整数变量的类:Start和End。我想知道当我们如上所述覆盖Comparator接口的compare方法时遵循的排序算法。我知道,默认情况下Collections.sort()和Arrays.sort()使用Timsort算法。任何帮助将不胜感激。非常感谢。
Collections.sort()使用Timsort的变体。
从javadocs:
该实现改编自Tim Peters针对Python的列表排序(TimSort)。它使用了Peter McIlroy的“乐观排序和信息理论复杂性”中的技术,在1993年1月举行的第四届ACM-SIAM离散算法年会上,第467-474页。
请注意,该Collections.sort()算法会获得一个“黑匣子”比较器,并使用每次比较所产生的值-无需理会比较器幕后的情况。
Collections.sort()