java - Collections.sort 是否保持相等元素的顺序?

标签 java sorting collections comparator

我有一个按日期参数排序的对象列表,我想按类别参数对它们重新排序,但保持类别内的日期顺序。

这样就足够了吗,还是我必须实现一个比较器来考虑同一类别对象的日期?

// sort the list by category asc(, date asc )
Collections.sort((List<Object>)entries, new Comparator<Object>() {

    @Override public int compare(Object elementA, Object elementB) {
        return elementA.category.compareTo(elementB.category); // what happens when elementA.category.equals(elementB.category)?
    }

});

最佳答案

您问题中的代码将执行您需要的操作,因为 Collections.sort() 确实保留了相等元素的顺序。

来自documentation :

This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.

换句话说,如果条目在 sort() 之前按日期排序,则在 sort( )

如果您不想依赖原始顺序,您可以轻松地扩展比较器以首先比较类别,然后使用日期打破平局。

关于java - Collections.sort 是否保持相等元素的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28613886/

相关文章:

Java 线程池和创建可运行对象的可运行对象

c - qsort 工作不正确(比较函数)

java - 反转通用列表中的项目

java - 如何减少委托(delegate)样板?

java - 转换应用程序上下文会出现不可转换的类型错误

linux - 如何从Linux文件中的分隔文件中消除重复记录(myfile_I.out : application/octet-stream; charset=binary)

python - 当它们是 DATETIME 时按键对 DICT 进行排序

Scala - 比较两个选项[Seq[String]]

Java 列表问题

c# - 虚函数在 C# 和 Java 中如何工作?