Java中集合根据多个字段排序
时间: 2023-09-27 18:06:34 浏览: 162
在Java中,可以使用`Comparator`来实现按照多个字段排序的功能。
假设有一个`User`类,它有两个属性`name`和`age`,我们希望先按照`name`字段升序排列,再按照`age`字段降序排列,可以使用以下代码:
```java
List<User> userList = new ArrayList<>();
// 假设已经将数据添加到userList中
Collections.sort(userList, new Comparator<User>() {
@Override
public int compare(User u1, User u2) {
int result = u1.getName().compareTo(u2.getName());
if (result == 0) {
result = u2.getAge() - u1.getAge();
}
return result;
}
});
```
在上面的代码中,我们首先按照`name`字段进行比较,如果两个`User`对象的`name`字段相同,则按照`age`字段进行比较。注意,在比较`age`字段时,我们需要将`u2.getAge() - u1.getAge()`作为返回值,这是因为我们希望按照`age`字段降序排列。
如果使用Java 8及以上版本,可以使用lambda表达式来简化代码:
```java
Collections.sort(userList, (u1, u2) -> {
int result = u1.getName().compareTo(u2.getName());
if (result == 0) {
result = u2.getAge() - u1.getAge();
}
return result;
});
```
阅读全文