我在我的公司成功地使用了CqEngine (https://code.google.com/p/cqengine/)
当您实例化一个集合时,可以轻松定义一组索引。这比谓词更加强大。
此外,当您对集合执行搜索时,CqEngine不会遍历整个集合,然后检查每个记录是否与谓词匹配。相反,它将直接在类似于Map的数据结构中查找匹配的记录。因此,您将拥有出色的性能。
Collection<Dto> testList = new ArrayList<>();
Filter<Dto> query = CQ.<Dto>filter(testList)
.where()
.property("id").eq().value(1);
Collection<Dto> filtered = query.list();
class Dto
{
private int id;
private String text;
public int getId()
{
return id;
}
public int getText()
{
return text;
}
}
Apache commons collections
(http://commons.apache.org/proper/commons-collections/),并且对这个库感到满意。此外,`Guava`(https://dev59.com/SmUp5IYBdhLWcg3w5Kg6#14979043)提供了许多有用的API。 - gunar