java集合根据字段排序
时间: 2023-09-10 22:10:49 浏览: 40
在Java集合中,可以通过实现 `Comparator` 接口来实现按照特定字段排序。下面以 `List` 为例,介绍如何根据字段排序。
假设有一个 `Person` 类,其中有 `name` 和 `age` 两个字段:
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
现在有一个 `List<Person>`,需要根据 `name` 或者 `age` 进行排序。可以按照以下步骤进行:
1. 定义 `Comparator` 实现类,实现 `compare` 方法:
```java
public class PersonNameComparator implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return o1.getName().compareTo(o2.getName());
}
}
public class PersonAgeComparator implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
}
```
2. 使用 `Collections.sort(List<T> list, Comparator<? super T> c)` 方法进行排序:
```java
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", 20));
personList.add(new Person("Alice", 18));
personList.add(new Person("Bob", 22));
// 根据 name 排序
Collections.sort(personList, new PersonNameComparator());
// 根据 age 排序
Collections.sort(personList, new PersonAgeComparator());
```
这样就可以根据不同字段排序了。注意,如果想要进行倒序排序,只需要在 `compare` 方法中返回 `o2.xxx() - o1.xxx()` 即可。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)