stream流判断是否包含值
时间: 2023-11-23 07:54:32 浏览: 51
Stream流可以使用anyMatch方法来判断是否包含某个值。方法签名:boolean anyMatch(Predicate<? super T> predicate):返回一个boolean类型的值,表示流中是否有任意一个元素匹配给定的谓词。例如:
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
boolean result = list.stream().anyMatch(num -> num == 3);
System.out.println(result); // 输出true
```
以上代码中,使用anyMatch方法判断流中是否包含值为3的元素,结果为true。
相关问题
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流判断对象集合中是否存在某个字段的值等于1
假设对象集合为List<MyObject>,其中MyObject包含属性field,可以使用Java 8的Stream流来判断是否存在某个字段的值等于1:
```java
boolean exists = myList.stream().anyMatch(o -> o.getField() == 1);
```
其中,anyMatch方法接受一个Predicate对象,用于判断集合中是否存在任意一个元素满足该条件。在上述代码中,Lambda表达式o -> o.getField() == 1表示对于集合中的每一个元素,判断其field属性是否等于1,如果存在至少一个元素满足该条件,返回true,否则返回false。
另外,如果要判断所有元素是否都满足该条件,可以使用allMatch方法:
```java
boolean allMatch = myList.stream().allMatch(o -> o.getField() == 1);
```
如果要判断所有元素都不满足该条件,可以使用noneMatch方法:
```java
boolean noneMatch = myList.stream().noneMatch(o -> o.getField() == 1);
```