5

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

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

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

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

4

3 回答 3

4

我在公司成功使用了 CqEngine ( https://code.google.com/p/cqengine/ )

当您实例化一个集合时,您可以轻松地定义一组索引。这比谓词强大得多。

此外,当您对集合执行搜索时,CqEngine 不会迭代整个集合然后检查每条记录是否与谓词匹配。相反,它将直接在类似 Map 的数据结构中找到匹配的记录。因此,您将有出色的表现。

于 2013-07-12T06:49:49.043 回答
3

您可以查看Commons Collections,更具体地说CollectionUtils.filter(Collection, Filter)

另一种选择是Google Guava,它有Iterables.filter(Iterable<T>, Predicate<? super T>).

这是你的选择。

于 2013-07-12T06:40:00.133 回答
2

可能为时已晚,但可能对其他人有帮助,您可以使用,

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;
    }
}
于 2014-08-10T10:39:18.240 回答