.stream().filter().forEach()
时间: 2023-08-19 14:18:10 浏览: 147
回答: .stream().filter()方法可以用于对集合中的元素进行筛选,根据指定的条件过滤出符合条件的元素。[1][2]而.forEach()方法则用于对筛选后的元素进行遍历,并对每个元素执行指定的操作。[1][2][3]这两个方法可以结合使用,例如可以使用.filter()方法筛选出符合条件的元素,然后使用.forEach()方法对这些元素进行遍历并执行相应的操作。
相关问题
.stream.filter.filter什么意思
在Java Stream API中,`.stream().filter(filter).filter(filter)`连续调用两次`filter`方法是用来对流进行过滤操作的。这里的第一个`filter(predicate)`接受一个谓词(Predicate),用于筛选出满足条件的元素。然后,第二次的`filter`也是同样的过程,它会对前一次过滤后的结果再次应用另一个谓词,进一步筛选数据。
例如:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
.filter(n -> n > 2) // 过滤掉不大于2的数
.filter(n -> n % 2 == 0) // 再次过滤掉奇数
.forEach(System.out::println); // 输出偶数:4, 6
```
这里首先保留大于2的数,然后再保留能被2整除的数。如果不希望连续调用两次,可以将第二个`filter`替换为一个单独的`filter`,并将两个谓词组合成一个复合谓词:
```java
numbers.stream()
.filter(n -> n > 2 && n % 2 == 0)
.forEach(System.out::println);
```
arrays.stream().filter
使用`Arrays.stream()`方法将数组转换为流,然后使用`filter()`方法对流进行过滤。例如,假设有一个整数数组`intArray`,我们想要过滤出其中的偶数,可以使用以下代码:
```java
int[] intArray = {1, 2, 3, 4, 5, 6};
IntStream stream = Arrays.stream(intArray);
IntStream evenStream = stream.filter(n -> n % 2 == 0);
evenStream.forEach(System.out::println);
```
这段代码将会输出2、4、6,这是因为我们使用`filter()`方法过滤出了数组中的偶数,并使用`forEach()`方法遍历输出。
阅读全文