java8写一个从配置文件中获取多个条件,并将list中满足条件的数据舍去的共通方法
时间: 2024-05-10 14:21:08 浏览: 157
下面是一个Java 8的示例代码,它从配置文件中获取多个条件,并将list中满足条件的数据舍去:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class ConfigFilter {
public static <T> List<T> filter(List<T> list, Map<String, Predicate<T>> filters) {
return list.stream()
.filter(item -> filters.values().stream().allMatch(filter -> filter.test(item)))
.collect(Collectors.toList());
}
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
list.add("grape");
Map<String, Predicate<String>> filters = ConfigReader.getFilters(); // 从配置文件中获取多个条件
List<String> filteredList = filter(list, filters);
System.out.println(filteredList);
}
}
```
这里的`filter`方法接受一个列表和一个过滤器映射,它会返回一个新的列表,其中满足所有过滤器的元素都被保留下来。
在`main`方法中,我们首先创建一个包含一些水果名称的列表。然后,我们从配置文件中获取过滤器映射,并将它们传递给`filter`方法进行过滤。最后,我们打印出过滤后的列表。
需要注意的是,这里使用了Java 8的Stream API和Lambda表达式来实现过滤器。`filter`方法首先将列表转换为一个流,然后使用`allMatch`方法来检查每个元素是否满足所有过滤器。如果是,则该元素被保留下来,否则被过滤掉。最后,`collect`方法将过滤后的元素收集到新的列表中。
阅读全文