我正在寻找允许我查询集合的Java库。我偶然发现了jFilter和JoSql。
然而,似乎JoSql自2010年以来一直处于非活动状态,并且只有2个版本。 jFilter似乎相当新,自去年以来没有任何新版本。
搜索结果的数量很少,在谷歌搜索其中任何一个时,都向我表明它们没有被广泛使用。
您对这些库有什么建议,或者知道更活跃一次吗?
答案 0 :(得分:4)
我在公司成功使用了CqEngine(https://code.google.com/p/cqengine/)
实例化集合时,可以轻松定义一组索引。这比谓词更强大。
此外,当您对集合执行搜索时,CqEngine将不会迭代整个集合,然后检查每条记录是否与谓词匹配。相反,它将直接在Map中找到匹配的记录,如数据结构。因此,你将有出色的表现。
答案 1 :(得分:2)
您可以查看Commons Collections,更具体地说CollectionUtils.filter(Collection, Filter)
。
另一个选项是Google Guava,其中Iterables.filter(Iterable<T>, Predicate<? super T>)
。
选择权在你手中。
答案 2 :(得分:1)
可能为时已晚,但对其他人可能有帮助, 你可以用,
https://code.google.com/p/joquery/
它支持以下语法,
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;
}
}