Collections.sort是否在相同元素上保持顺序?

Not*_*aeL 12 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)?
    }

});
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 17

你问题中的代码将完成你所需要的,因为Collections.sort()它保留了相同元素的顺序.

文档:

这种类型保证是稳定的:相同的元素不会因排序而重新排序.

换句话说,如果条目是按照日期之前的顺序排序的sort(),则它们将在每个类别之后按日期排序sort().

如果您不想依赖原始排序,可以轻松扩展比较器,首先比较类别,然后使用日期断开关系.