用stream流给对象某个字段赋值,并根据这个字段值排序
时间: 2024-05-15 14:13:15 浏览: 109
java使用stream对日期排序
可以使用Java 8中的Stream API来实现这个功能。首先需要创建一个对象列表,然后通过Stream API进行排序。
假设有一个对象类Person,其中包含两个字段name和age,我们需要根据age字段对Person对象进行排序。
```java
public class Person {
private String name;
private int age;
// 构造方法和getter/setter省略
}
```
首先创建一个Person对象列表:
```java
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 25));
personList.add(new Person("Bob", 30));
personList.add(new Person("Charlie", 20));
```
然后使用Stream API给age字段赋值并排序:
```java
List<Person> sortedList = personList.stream()
.peek(person -> person.setAge(person.getName().length() * 10)) // 给age字段赋值
.sorted(Comparator.comparingInt(Person::getAge)) // 根据age字段排序
.collect(Collectors.toList()); // 转换为List
```
在上面的代码中,我们使用`peek`方法给每个Person对象的age字段赋值,赋值的规则是将name字段的长度乘以10。然后使用`sorted`方法根据age字段排序。最后使用`collect`方法将排序后的Stream转换为List。
需要注意的是,`sorted`方法返回的是一个新的Stream对象,因此需要使用`collect`方法将其转换为List或其他类型的集合。
阅读全文