我有一个按日期参数排序的对象列表,我想按类别参数对它们重新排序,但保持类别内的日期顺序。
这样就足够了吗,还是我必须实现一个比较器来考虑同一类别对象的日期?
// 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/