stream流过滤对象的某个属性
时间: 2023-11-08 14:09:04 浏览: 312
可以使用Java 8中的Stream API来过滤对象的某个属性。假设我们有一个类Person,它有一个属性age,现在我们想过滤出年龄大于等于18岁的人,可以按照以下步骤进行操作:
1. 创建一个List<Person>对象。
2. 使用stream()方法将List转换为Stream。
3. 使用filter()方法过滤出符合条件的元素,条件为person.getAge() >= 18。
4. 使用map()方法将Stream中的元素转换为另一个类型,例如将Person转换为其年龄。
5. 使用collect()方法将Stream转换为List。
以下是示例代码:
```
List<Person> personList = new ArrayList<>();
// 添加Person对象到personList中
List<Integer> ageList = personList.stream()
.filter(person -> person.getAge() >= 18)
.map(Person::getAge)
.collect(Collectors.toList());
```
这样,我们就过滤出了年龄大于等于18岁的人,并将他们的年龄转换为一个List。
相关问题
java stream流 过滤对象中的某个属性
可以使用 stream 的 map() 方法,将对象中要过滤的属性映射出来,然后使用 filter() 方法进行过滤,最后使用 collect() 方法将过滤后的对象转为一个新的 list 。
例如:
List<Person> personList = new ArrayList<Person>();
personList.add(new Person("Alice", 26));
personList.add(new Person("Bob", 31));
personList.add(new Person("Charlie", 24));
List<Integer> ageList = personList.stream().map(Person::getAge).filter(age -> age > 25).collect(Collectors.toList());
这个例子将 Person 对象中的 age 属性映射出来,然后对 age 大于 25 的进行过滤,最后将符合条件的 age 转为一个新的列表 ageList。
stream流对对象属性进行去null求和
Stream流在Java中是一个强大的工具,用于处理集合数据,其中可以包含复杂的操作,如过滤、映射、排序和聚合等。如果你想对一个对象集合中的每个元素的某个属性值求和,但需要排除属性值为null的情况,你可以使用`filter`方法先筛选出非null的属性值,然后再用`mapToInt`转换为数值并求和。
以下是基本步骤:
```java
List<YourObject> objects = ... // 假设这是你的对象列表
OptionalLong sum = objects.stream() // 创建stream
.filter(yourObject -> yourObject.getYourAttribute() != null) // 过滤掉属性值为null的对象
.mapToLong(YourObject::getYourAttribute) // 将对象的属性值转换为Long
.sum(); // 求和
if (sum.isPresent()) {
long total = sum.getAsLong(); // 获取结果
System.out.println("非null属性值的总和: " + total);
} else {
System.out.println("所有对象的该属性值都为null");
}
```
在这里,`YourObject::getYourAttribute`是一个方法引用,它表示从每个对象获取`yourAttribute`属性的值。
阅读全文