List<Object>怎么根据其中的某个属性排序
时间: 2024-03-11 16:50:36 浏览: 58
List 对象属性排序
4星 · 用户满意度95%
如果您有一个包含属性的对象列表,您可以使用Java 8的Stream API来按照该属性进行排序。假设您有一个`List<Person>`,每个人对象都有一个年龄属性`age`,您可以如下排序:
```java
List<Person> people = ... // 创建一个人员列表
List<Person> sortedPeople = people.stream()
.sorted(Comparator.comparingInt(Person::getAge))
.collect(Collectors.toList());
```
在这个示例中,我们使用`sorted`方法和一个`Comparator`来比较人员的年龄属性。`Comparator`使用`comparingInt`方法和一个方法引用`Person::getAge`来指定要比较的属性。最后,我们使用`collect`方法将排序后的人员收集到一个新的列表中。
请注意,比较属性必须是一个实现了`Comparable`接口的类型。如果您的属性不是实现了`Comparable`接口的类型,您可以使用`Comparator.comparing`方法并提供一个获取属性的`Function`以及一个实现了`Comparator`接口的比较器。
例如,如果您的人员对象具有一个`String`类型的名字属性`name`,您可以如下排序:
```java
List<Person> people = ... // 创建一个人员列表
List<Person> sortedPeople = people.stream()
.sorted(Comparator.comparing(Person::getName, String.CASE_INSENSITIVE_ORDER))
.collect(Collectors.toList());
```
这里我们使用`comparing`方法和一个方法引用`Person::getName`来指定要比较的属性。我们还提供了一个`String.CASE_INSENSITIVE_ORDER`比较器,以便不区分大小写地比较名字。
阅读全文