java8写一个根据多个条件对list进行skip的共通方法
时间: 2024-04-29 19:22:49 浏览: 17
以下是一个根据多个条件对list进行skip的共通方法的示例代码:
```java
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class ListSkipper<T> {
public List<T> skip(List<T> list, Predicate<T>... predicates) {
Predicate<T> combinedPredicate = buildCombinedPredicate(predicates);
return list.stream()
.filter(combinedPredicate.negate())
.collect(Collectors.toList());
}
private Predicate<T> buildCombinedPredicate(Predicate<T>[] predicates) {
Predicate<T> combinedPredicate = predicates[0];
for (int i = 1; i < predicates.length; i++) {
combinedPredicate = combinedPredicate.and(predicates[i]);
}
return combinedPredicate;
}
}
```
使用该方法时,可以传入一个List和多个Predicate对象作为参数,方法会根据这些Predicate对象进行过滤,返回一个新的List:
```java
List<String> list = Arrays.asList("apple", "banana", "orange", "pear", "grape");
ListSkipper<String> skipper = new ListSkipper<>();
List<String> result = skipper.skip(list,
s -> s.startsWith("a"),
s -> s.length() > 5
);
System.out.println(result); // [orange, pear, grape]
```
在上面的示例中,ListSkipper的skip方法会根据传入的两个Predicate对象,过滤出不以"a"开头且长度不大于5的元素,返回一个新的List。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)