stream().filter统计数量
时间: 2023-10-21 07:27:24 浏览: 147
你可以使用 `stream().filter()` 方法来过滤空值,并使用 `.count()` 方法来统计数量。下面是一个示例代码:
```java
List<String> list = Arrays.asList("hello", "", "world", "", "java");
long count = list.stream()
.filter(str -> !str.isEmpty())
.count();
System.out.println(count); // 输出:3
```
在这个例子中,我们使用 `stream()` 方法将列表转换为流,然后使用 `filter()` 方法过滤掉空字符串(`str -> !str.isEmpty()` 表达式表示字符串不为空),最后使用 `count()` 方法统计非空字符串的数量。结果输出为 3,即列表中非空字符串的数量。
相关问题
public static <T> Stream<T> filterStream(Stream<T> streamA, Predicate<T> conditions) { Stream.Builder<YourElementType> builder = Stream.builder(); inStream.parallel().filter(conditions).flatMap(e -> { builder.accept(e); return Stream.empty(); }).count(); return builder.build(); }详细说明这段代码
这段代码定义了一个名为 `filterStream` 的静态方法,该方法接受两个参数:一个类型为 `Stream<T>` 的流对象 `streamA` 和一个类型为 `Predicate<T>` 的条件对象 `conditions`,并返回一个类型为 `Stream<T>` 的流对象。
在方法中,首先创建了一个 `Stream.Builder<YourElementType>` 类型的 `builder` 对象,用于构建新的流对象。
接着,通过调用 `streamA` 对象的 `parallel` 方法将流对象转换为并行流对象,然后对并行流进行过滤操作,保留满足 `conditions` 条件的元素。
在过滤操作后,通过调用 `flatMap` 方法,将每个满足条件的元素添加到 `builder` 对象中,然后返回一个空的流对象。
最后,通过调用 `count` 方法统计流中元素的数量,触发流的执行,确保所有元素都被添加到了 `builder` 对象中,并返回一个由 `builder` 构建的新流对象。
该方法的作用是将一个流对象中满足指定条件的元素过滤出来,并构建一个新的流对象返回。
list.stream().filter().count
list.stream().filter().count是一个用于统计满足条件的元素数量的操作。其中filter()用于筛选出满足某个条件的元素,count()用于统计满足条件的元素数量。具体来说,通过list.stream().filter().count可以统计出list中性别为女的元素数量。所提供的代码示例中,通过filter(s->s.getSex().equals("女"))筛选出性别为女的元素,然后通过count()方法统计满足条件的元素数量。最后,通过System.out.println(count)将结果输出到控制台。
阅读全文