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