ilter方法过滤条件为 list<Interger>
时间: 2023-12-06 12:03:00 浏览: 68
如果需要使用filter方法过滤条件为`List<Integer>`类型的元素,可以使用`contains`方法来判断一个元素是否在给定的`List<Integer>`列表中。例如:
```java
List<List<Integer>> numbers = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(2, 3), Arrays.asList(4, 5));
List<List<Integer>> filteredNumbers = numbers.stream()
.filter(list -> list.containsAll(Arrays.asList(1, 2)))
.collect(Collectors.toList());
```
上述代码中,首先定义了一个列表`numbers`,其中每个元素都是一个`List<Integer>`类型的列表。然后使用stream对该列表进行操作,使用filter方法过滤掉不包含1和2的列表,最后使用collect方法将结果转换为一个新的列表。在lambda表达式中,使用`containsAll`方法来判断一个`List<Integer>`列表是否包含1和2这两个元素。如果是,则保留该元素,否则过滤掉该元素。
相关问题
ilter(Predicate<T> p):筛选符合条件的元素。 map(Function<T, R> f):将元素映射为另一种类型。 sorted():对元素进行排序。 distinct():去重。 limit(long maxSize):截取指定数量的元素。 skip(long n):跳过指定数量的元素。 终端操作 终端操作是对 Stream 执行最终操作后,不再返回 Stream 类型。常见的终端操作有: forEach(Consumer<T> c):遍历元素。 toArray():将 Stream 转换为数组。 collect(Collector<T, A, R> c):将 Stream 转换为集合。 reduce(BinaryOperator<T> bo):将元素按照指定的方式进行聚合。 count():返回元素数量。 anyMatch(Predicate<T> p):判断是否存在符合条件的元素。 allMatch(Predicate<T> p):判断是否所有元素都符合条件。 noneMatch(Predicate<T> p):判断是否不存在符合条件的元素。 findFirst():返回第一个元素。 findAny():返回任意一个元素。每个函数生成一个代码示例
好的,以下是每个函数的示例代码:
1. filter(Predicate<T> p):筛选符合条件的元素。
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
```
2. map(Function<T, R> f):将元素映射为另一种类型。
```
List<String> words = Arrays.asList("hello", "world");
List<Integer> wordLengths = words.stream()
.map(String::length)
.collect(Collectors.toList());
```
3. sorted():对元素进行排序。
```
List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3);
List<Integer> sortedNumbers = numbers.stream()
.sorted()
.collect(Collectors.toList());
```
4. distinct():去重。
```
List<Integer> numbers = Arrays.asList(1, 3, 2, 1, 2, 3, 4, 5, 4, 5);
List<Integer> distinctNumbers = numbers.stream()
.distinct()
.collect(Collectors.toList());
```
5. limit(long maxSize):截取指定数量的元素。
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> limitedNumbers = numbers.stream()
.limit(5)
.collect(Collectors.toList());
```
6. skip(long n):跳过指定数量的元素。
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> skippedNumbers = numbers.stream()
.skip(5)
.collect(Collectors.toList());
```
7. forEach(Consumer<T> c):遍历元素。
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
.forEach(System.out::println);
```
8. toArray():将 Stream 转换为数组。
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Integer[] numberArray = numbers.stream()
.toArray(Integer[]::new);
```
9. collect(Collector<T, A, R> c):将 Stream 转换为集合。
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> collectedNumbers = numbers.stream()
.collect(Collectors.toList());
```
10. reduce(BinaryOperator<T> bo):将元素按照指定的方式进行聚合。
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
.reduce(0, (a, b) -> a + b);
```
11. count():返回元素数量。
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long count = numbers.stream()
.count();
```
12. anyMatch(Predicate<T> p):判断是否存在符合条件的元素。
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
boolean hasEvenNumber = numbers.stream()
.anyMatch(n -> n % 2 == 0);
```
13. allMatch(Predicate<T> p):判断是否所有元素都符合条件。
```
List<Integer> numbers = Arrays.asList(2, 4, 6, 8, 10);
boolean areAllEvenNumbers = numbers.stream()
.allMatch(n -> n % 2 == 0);
```
14. noneMatch(Predicate<T> p):判断是否不存在符合条件的元素。
```
List<Integer> numbers = Arrays.asList(1, 3, 5, 7, 9);
boolean hasNoEvenNumbers = numbers.stream()
.noneMatch(n -> n % 2 == 0);
```
15. findFirst():返回第一个元素。
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> firstNumber = numbers.stream()
.findFirst();
```
16. findAny():返回任意一个元素。
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> anyNumber = numbers.stream()
.findAny();
```
阅读全文