通过stream流判断list中属性的最大值,并获取这个最大值所在的对象
时间: 2024-02-16 11:05:29 浏览: 116
可以使用Java 8中引入的Stream API对List中的属性进行操作,找到属性的最大值,以及包含该最大值的对象。假设我们有一个包含Person对象的List,每个Person对象都有一个age属性。我们可以使用以下代码来找到年龄最大的Person对象:
```
Person oldestPerson = personList.stream()
.max(Comparator.comparingInt(Person::getAge))
.orElse(null);
```
在这个例子中,我们首先调用stream()方法将List转换为一个Stream流。然后我们使用max()方法来找到age属性的最大值,使用Comparator.comparingInt()方法来指定比较器,以Person对象的age属性为比较依据。最后,我们使用orElse()方法来指定如果找不到最大值时返回的默认值,这里设为null。
如果需要找到多个年龄相同的Person对象,可以使用filter()方法过滤掉不符合条件的对象,例如:
```
List<Person> oldestPeople = personList.stream()
.filter(p -> p.getAge() == oldestPerson.getAge())
.collect(Collectors.toList());
```
在这个例子中,我们使用filter()方法过滤掉年龄不是最大值的Person对象,只保留年龄等于最大值的对象。然后使用collect()方法将结果收集为一个新的List,其中包含所有年龄等于最大值的Person对象。
阅读全文