用于查询集合/对象的Java库

时间:2013-07-12 06:32:32

标签: java collections

我正在寻找允许我查询集合的Java库。我偶然发现了jFilterJoSql

然而,似乎JoSql自2010年以来一直处于非活动状态,并且只有2个版本。 jFilter似乎相当新,自去年以来没有任何新版本。

搜索结果的数量很少,在谷歌搜索其中任何一个时,都向我表明它们没有被广泛使用。

您对这些库有什么建议,或者知道更活跃一次吗?

3 个答案:

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