list.stream().filter过滤多个list字符串条件返回新list
时间: 2023-08-28 14:03:44 浏览: 147
Predicate
你可以使用多个filter()方法来实现多个条件的过滤。以下是一个示例代码:
```
List<String> list1 = Arrays.asList("apple", "banana", "orange", "grape");
List<String> list2 = Arrays.asList("red", "yellow", "green", "purple");
List<String> filteredList = list1.stream()
.filter(s -> s.length() > 5) // 过滤出长度大于5的字符串
.filter(s -> list2.contains(s.substring(0, 3))) // 过滤出前三个字符在list2中出现的字符串
.collect(Collectors.toList());
System.out.println(filteredList); // 输出 [orange, grape]
```
在这个示例中,我们有两个List,分别是list1和list2。我们首先使用第一个filter()方法过滤出长度大于5的字符串,然后使用第二个filter()方法过滤出前三个字符在list2中出现的字符串。最后,我们使用collect()方法将过滤后的字符串收集到一个新的List中,并打印出新的List。它应该只包含orange和grape这两个字符串,因为它们的前三个字符分别是ora和gra,在list2中出现过。
阅读全文