对一个存放实体类的集合 进行多字段的排序
时间: 2024-02-03 15:14:59 浏览: 71
可以使用 Java 中的 Comparator 接口实现多个字段的排序。假设有一个实体类 User,其中包含 name、age、gender 三个字段,可以按照如下方式进行排序:
```java
import java.util.*;
public class SortUser {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
userList.add(new User("Alice", 18, "female"));
userList.add(new User("Bob", 20, "male"));
userList.add(new User("Charlie", 18, "male"));
userList.add(new User("David", 22, "male"));
userList.add(new User("Eva", 20, "female"));
// 按照 age 升序,gender 降序,name 升序排序
Collections.sort(userList, new Comparator<User>() {
@Override
public int compare(User u1, User u2) {
if (u1.age != u2.age) {
return u1.age - u2.age;
} else if (!u1.gender.equals(u2.gender)) {
return u2.gender.compareTo(u1.gender);
} else {
return u1.name.compareTo(u2.name);
}
}
});
for (User user : userList) {
System.out.println(user);
}
}
static class User {
String name;
int age;
String gender;
public User(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
}
}
```
输出结果为:
```
User{name='Alice', age=18, gender='female'}
User{name='Charlie', age=18, gender='male'}
User{name='Eva', age=20, gender='female'}
User{name='Bob', age=20, gender='male'}
User{name='David', age=22, gender='male'}
```
可以看到,按照 age 升序、gender 降序、name 升序进行了排序。
阅读全文