java8写一个根据n个条件对list进行skip的共通方法
时间: 2024-05-12 11:19:53 浏览: 18
以下是一个根据n个条件对list进行skip的共通方法的示例代码:
```java
public static <T> List<T> skipByConditions(List<T> list, Predicate<T>... conditions) {
int count = 0;
List<T> result = new ArrayList<>();
for (T item : list) {
boolean skip = false;
for (Predicate<T> condition : conditions) {
if (condition.test(item)) {
skip = true;
break;
}
}
if (!skip) {
if (count > 0) {
count--;
} else {
result.add(item);
}
}
}
return result;
}
```
该方法接受一个List和一个或多个Predicate作为参数,返回一个根据条件进行skip后的List。例如,如果要跳过所有值为null或小于0的元素,可以这样调用该方法:
```java
List<Integer> list = Arrays.asList(1, 2, null, 3, -1, 4, null, 5);
List<Integer> result = skipByConditions(list, Objects::isNull, i -> i < 0);
System.out.println(result); // [1, 2, 3, 4, 5]
```
此时,结果列表中的元素为1、2、3、4、5,跳过了null和小于0的元素。如果要跳过前两个满足条件的元素,可以这样调用该方法:
```java
List<Integer> list = Arrays.asList(1, 2, null, 3, -1, 4, null, 5);
List<Integer> result = skipByConditions(list, Objects::isNull, i -> i < 0);
result = result.stream().skip(2).collect(Collectors.toList());
System.out.println(result); // [3, 4, 5]
```
此时,结果列表中的元素为3、4、5,跳过了前两个满足条件的元素。