例如,我有一个ArrayList
的{{1}}。将来的管理员,希望在系统中有一个过滤器。如果将admin设置为用户搜索过滤器,例如RegisteredUser
,则程序应返回30岁以下的所有注册用户。当然,管理员可以添加超过1,2,3,4 ...个过滤器
此刻,我使用age < 30
作为数据库。
哪种算法在这里效果最好?
ArrayList
答案 0 :(得分:0)
这里有一个示例,说明如何将过滤器列表应用于集合:
public List<String> applyFiltersToACollection(List<String> collection, List<Predicate<String>> filters) {
return collection
.stream()
.filter(filters.stream().reduce(x->true, Predicate::and))
.collect(Collectors.toList());
}
以及有关如何调用此方法的示例:
List<String> names = Arrays.asList("Peter", "Paul", "Laura");
List<Predicate<String>> filters = Arrays.asList(name -> name.startsWith("P"), name -> name.length() >= 5);
System.out.println(applyFiltersToACollection(names, filters));
希望这会有所帮助。