stream 流根据根据值过滤
时间: 2023-10-18 11:17:28 浏览: 80
你可以使用 Java 8 中的 Stream API 来过滤流中的元素。具体方法是使用 filter() 方法并传入一个 Predicate,该 Predicate 用于判断流中的每个元素是否满足某个条件。以下是一个示例代码:
假设有一个 List<Integer>,你想要过滤出其中大于 5 的元素,并将它们打印出来,可以这样写:
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
numbers.stream()
.filter(n -> n > 5)
.forEach(System.out::println);
```
这段代码将会输出数字 6 到 10。详细解释如下:
1. 首先将 List 转换成 Stream。
2. 然后使用 filter() 方法过滤出大于 5 的元素。
3. 最后使用 forEach() 方法打印每个符合条件的元素。
希望这能帮到你。
相关问题
stream流过滤是否存在在某个值中
您可以使用`Stream`的`anyMatch()`方法来判断流中是否存在某个值。例如,假设您有一个包含`String`类型元素的`List`,您想要判断这个`List`中是否存在一个特定的字符串,您可以使用以下代码:
```java
List<String> list = ... // 假设这是一个String类型的列表
String targetValue = "hello"; // 假设这是您想要查找的字符串
boolean isExists = list.stream()
.anyMatch(str -> str.equals(targetValue));
```
在上面的代码中,我们使用`Stream`的`anyMatch()`方法来判断流中是否存在一个特定的字符串。该方法接受一个`Predicate`参数,用于定义筛选条件。在这里,我们使用`str -> str.equals(targetValue)`作为筛选条件,表示如果流中存在一个字符串等于`targetValue`,则返回`true`,否则返回`false`。最终,返回的`isExists`变量将会是一个布尔值,表示流中是否存在特定的字符串。
stream流累加大于某个值
在Java 8及以后版本中,Stream API提供了一种方便的方式来处理集合数据并进行过滤、映射和累加等操作。如果你想利用stream对集合中的元素进行累加,并判断累加结果是否大于某个特定值,你可以这样做:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int targetSum = 10; // 比如你想让元素之和大于10
OptionalInt sum = numbers.stream()
.filter(n -> n > 0) // 只考虑正数
.mapToInt(Integer::intValue) // 将Stream转换为IntStream便于累加
.sum();
if (sum.getAsInt() > targetSum) {
System.out.println("元素之和大于" + targetSum);
} else {
System.out.println("元素之和小于等于" + targetSum);
}
阅读全文