stream过滤某个字段
时间: 2023-08-29 19:04:41 浏览: 83
您可以使用流(Stream)的map()方法来过滤某个字段。例如,假设您有一个包含Person对象的列表,每个Person对象都有一个名字字段和一个年龄字段。如果您想要过滤掉所有年龄小于18岁的人,可以使用以下代码:
```java
List<Person> people = ... // 假设这是一个Person对象列表
List<String> namesOfAdults = people.stream()
.filter(person -> person.getAge() >= 18)
.map(Person::getName)
.collect(Collectors.toList());
```
在上面的代码中,我们首先使用filter()方法来过滤掉年龄小于18岁的人,然后使用map()方法将剩余的人的名字转换成一个字符串列表。最后,我们使用collect()方法将这个列表收集起来。
相关问题
stream 根据某个字段过滤重复的值
Stream API在Java 8及以上版本中提供了一种高效的方式来处理集合数据,包括过滤重复的元素。如果你想根据某个字段过滤出列表中的重复项,可以按照以下步骤操作:
1. 首先,你需要有一个包含该字段的集合(例如List),比如`List<MyObject> items`,其中`MyObject`是一个有特定字段的类。
2. 使用Java Stream的distinct()方法,这个方法返回一个新的流,其中不含原始流中的重复元素。但是默认情况下,它只基于流中的对象实例进行比较,如果想根据某个字段(如`getName()`或`getId()`)判断是否重复,需要配合Collectors.groupingBy()一起使用:
```java
Map<String, List<MyObject>> groupedItems = items.stream()
.collect(Collectors.groupingBy(obj -> obj.getFieldName()));
```
这里假设`getFieldName()`是你想要根据其值去除重复的对象方法。
3. 现在`groupedItems`将是一个Map,键是字段的值,值是具有相同该字段值的所有对象。你可以进一步检查每个值列表(`List<MyObject>`),如果有多个元素,则说明那些元素在这个字段上是重复的。
javastream的过滤怎么过滤某个字段值等于1或者2
你可以使用 Java 8 中的 Stream API 中的 filter() 方法来过滤某个字段值等于 1 或者 2 的元素。例如,假设你有一个包含多个对象的列表 List<T>,其中 T 是一个包含字段值的对象,你可以使用以下代码来实现过滤操作:
```
List<T> filteredList = originalList.stream()
.filter(t -> t.getField() == 1 || t.getField() == 2)
.collect(Collectors.toList());
```
在上面的代码中,我们首先调用了 stream() 方法将列表转换为一个 Stream 对象,然后使用 filter() 方法过滤出字段值等于 1 或 2 的元素,最后使用 collect() 方法将过滤后的元素收集到一个新的列表 filteredList 中。其中,t.getField() 表示获取 T 对象的字段值。
阅读全文