Comparator自定义多字段排序
时间: 2023-07-21 07:09:39 浏览: 187
要自定义多字段排序,您可以创建一个实现Comparator接口的自定义比较器。在比较器中,您可以定义多个比较条件,并按照您的需求进行排序。下面是一个示例代码:
```java
List<Person> people = new ArrayList<>();
// 假设Person类有name、age和score字段
people.add(new Person("John", 25, 80));
people.add(new Person("Alice", 30, 90));
people.add(new Person("Bob", 25, 85));
people.add(new Person("Alice", 25, 95));
Comparator<Person> personComparator = Comparator
.comparing(Person::getName)
.thenComparing(Person::getAge)
.thenComparing(Person::getScore);
Collections.sort(people, personComparator);
```
在上述示例中,我们创建了一个personComparator比较器,它首先按照name字段进行排序,然后在name相同时按照age字段进行排序,最后在name和age都相同时按照score字段进行排序。然后,我们使用Collections.sort()方法将people列表按照personComparator进行排序。
请注意,这是一种修改原始列表的方式。如果您不想修改原始列表,可以使用stream.sorted()方法来创建一个新的排序后的列表,就像在前面的回答中所示。
阅读全文