stream流filter 过滤indexof
时间: 2023-06-22 21:48:22 浏览: 135
您可以使用`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`。
相关问题
cabinList.stream().filter(t->map.get(t)!=null&&map.get(t).getInd().indexOf("P")<0).count();
你好!根据你提供的代码,我可以看出你正在使用Java的Stream API来对一个名为`cabinList`的列表进行筛选操作。根据你的过滤条件,你希望筛选出那些在`map`中对应的值不为null且其`Ind`字段不包含"P"的元素。最后,你使用`count()`方法来计算符合条件的元素数量。这个操作的结果将是一个`long`类型的值。
请注意,为了能够正确执行这段代码,你需要确保`cabinList`和`map`变量已经被正确初始化,并且`map`是一个包含了对应关系的映射表。另外,你需要确保`Ind`字段是存在于映射表中的对象的一个有效字段。
如果你有任何其他问题,或者需要更详细的解释,请随时告诉我!
java list .stream().filter 最大值对应的记录
假设我们有一个包含整数的列表,我们想找到列表中最大值对应的记录,可以使用以下代码:
```java
List<Integer> numbers = Arrays.asList(1, 5, 3, 8, 2);
Optional<Integer> maxNumber = numbers.stream()
.max(Comparator.comparingInt(Integer::intValue));
if (maxNumber.isPresent()) {
Integer max = maxNumber.get();
System.out.println("Max number: " + max);
Optional<Integer> maxRecord = numbers.stream()
.filter(n -> n.equals(max))
.findFirst();
if (maxRecord.isPresent()) {
Integer maxIndex = numbers.indexOf(maxRecord.get());
System.out.println("Max record index: " + maxIndex);
}
}
```
这段代码首先找到列表中的最大值,然后使用 `filter` 方法过滤出所有等于最大值的记录,并使用 `findFirst` 方法找到第一个匹配的记录。最后,使用 `indexOf` 方法找到该记录在列表中的索引。
阅读全文