stream流filter过滤list
时间: 2023-11-17 15:02:24 浏览: 111
stream流的filter方法可以用于过滤list中的元素,它接受一个Predicate参数,该参数是一个函数式接口,用于判断元素是否符合过滤条件。filter方法会返回一个新的Stream对象,其中包含符合条件的元素。需要注意的是,filter方法并不会改变原始的list对象,而是返回一个新的Stream对象,因此如果需要修改过滤后的数据,需要新建对象。
举个例子,假设我们有一个List<Integer>对象,其中包含1到10的整数,我们可以使用filter方法过滤出其中的偶数:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenList = list.stream().filter(i -> i % 2 == 0).collect(Collectors.toList());
```
上述代码中,我们使用stream方法将list转换为Stream对象,然后使用filter方法过滤出其中的偶数,最后使用collect方法将结果转换为List对象。在这个例子中,evenList将包含2, 4, 6, 8, 10这些偶数。
相关问题
stream流filter过滤集合
使用Java Stream的filter()方法可以对集合进行过滤。该方法接收一个Predicate参数,用于指定过滤条件。在过滤时,只会保留满足条件的元素,并返回一个新的Stream对象。
以下是一个示例代码,展示如何使用filter()方法过滤集合中身高在1.8米及以上的男生:
```
List<StudentInfo> boys = studentList.stream()
.filter(s -> s.getGender() && s.getHeight() >= 1.8)
.collect(Collectors.toList());
```
在上述代码中,我们首先通过stream()方法将集合转换为一个Stream对象。然后,使用filter()方法指定过滤条件,判断是否为男生(通过getGender()方法返回布尔值)且身高是否大于等于1.8米。最后,通过collect()方法将满足条件的元素收集到一个新的List中。
你可以根据实际需求修改filter()方法的条件,以实现不同的过滤效果。
stream流filter 过滤indexof
您可以使用`Stream`的`filter()`方法和`String`的`indexOf()`方法来过滤包含特定子字符串的元素。例如,假设您有一个包含`String`类型元素的`List`,您想要找到其中包含特定子字符串的元素,您可以使用以下代码:
```java
List<String> list = ... // 假设这是一个String类型的列表
String substring = "hello"; // 假设这是您想要查找的子字符串
List<String> filteredList = list.stream()
.filter(str -> str.indexOf(substring) != -1)
.collect(Collectors.toList());
```
在上面的代码中,我们使用`Stream`的`filter()`方法来筛选包含特定子字符串的元素。该方法接受一个`Predicate`参数,用于定义筛选条件。在这里,我们使用`str -> str.indexOf(substring) != -1`作为筛选条件,表示如果元素包含子字符串`substring`,则返回`true`,否则返回`false`。最终,返回的`filteredList`变量将会是一个包含所有包含特定子字符串的元素的`List`。
阅读全文