如何排序对象列表,如果相等则保持原始顺序?

时间:2019-04-04 09:45:38

标签: java sorting comparator

我想按年龄对人员列表进行排序。如果年龄相等,我想保留原始顺序,而与所有其他字段无关。

示例来源:

persons: [{name=a, age=30}, {name=b, age=30}, {name=c, age=12}, {name=d, age = 30}]

所需结果:

persons: [{name=c, age=12}, {name=a, age=30}, {name=b, age=30}, {name=d, age = 30}]

最重要的是:由于人A,B和D被认为是相等的,因此它们排在底部,但要保留其原始顺序。

问题:以下比较器是否可以保证这种行为?

public class Person {
    private int age;
    private String name;
    //many more properties
}

Comparator<Person> comparator = Comparator.comparing(person -> person.getAge());
Collections.sort(persons, comparator);

0 个答案:

没有答案