我想按年龄对人员列表进行排序。如果年龄相等,我想保留原始顺序,而与所有其他字段无关。
示例来源:
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);