如何智能/更好地过滤ArrayList?

时间:2019-04-03 12:47:19

标签: java

例如,我有一个ArrayList的{​​{1}}。将来的管理员,希望在系统中有一个过滤器。如果将admin设置为用户搜索过滤器,例如RegisteredUser,则程序应返回30岁以下的所有注册用户。当然,管理员可以添加超过1,2,3,4 ...个过滤器

此刻,我使用age < 30作为数据库。

哪种算法在这里效果最好?

ArrayList

1 个答案:

答案 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));

希望这会有所帮助。