stream流根据某个字段排序
时间: 2023-10-23 18:08:42 浏览: 126
如果你使用的是Java 8或更高版本,你可以使用`Comparator.comparing`方法来根据某个字段进行排序。以下是一个例子:
假设你有一个`List`对象,其中包含一些`Person`对象。每个`Person`对象都有一个`name`和`age`字段。
```java
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 20));
```
要按照年龄进行排序,你可以使用以下代码:
```java
List<Person> sortedPeople = people.stream()
.sorted(Comparator.comparing(Person::getAge))
.collect(Collectors.toList());
```
在这个例子中,我们使用`Comparator.comparing`来创建一个比较器,并指定使用`Person::getAge`方法来获取年龄字段进行比较。
如果你想按照姓名进行排序,可以使用以下代码:
```java
List<Person> sortedPeople = people.stream()
.sorted(Comparator.comparing(Person::getName))
.collect(Collectors.toList());
```
这个例子中,我们使用`Person::getName`方法来获取姓名字段进行比较。
注意,`Comparator.comparing`方法返回一个比较器对象,它可以用于对流元素进行排序。在这个例子中,我们使用`sorted`方法来排序流,并使用`collect`方法将结果收集到一个新的`List`对象中。
阅读全文