覆盖比较比较方法接口的方法时使用了哪种排序算法?[英] What sorting algorithm used while overriding compare method of comparator interface?

问题描述

 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是一个列表,间隔是一个具有2个整数变量的类:启动和结束.当我们覆盖上述比较方法的比较方法时,我想知道哪种排序算法.我知道,默认情况下collections.sort()和arrays.sort()使用timsort算法.任何帮助将不胜感激.预先感谢.

推荐答案

collections.sort()使用 timsort .

来自 javadocs :

该实施是根据python的蒂姆·彼得斯(Tim Peters)的列表排序改编的 (Timsort).它使用彼得·麦克罗伊(Peter McIlroy)的"乐观分类"中的技术 和信息理论上的复杂性" 年度ACM-SIAM关于离散算法的研讨会,第467-474页,1月 1993.

请注意,Collections.sort()算法获得了一个"黑匣子"比较器,并使用每个比较的值 - 不关心比较器的幕后发生的事情.

其他推荐答案

比较器和可比较的接口不进行任何排序,因此那里没有排序算法.他们只是比较两个对象,如果您想对这些对象的列表进行排序.

本文地址:https://www.itbaoku.cn/post/978490.html