当前位置: 首页 > 知识库问答 >
问题:

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

司寇灵均
2023-03-14

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

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

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

你对这些图书馆有什么建议,或者知道更多的活动吗?

共有3个答案

羊舌兴文
2023-03-14

也许已经太晚了,但对其他人可能会有帮助,你可以使用,

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;
    }
}
云洋
2023-03-14

你可以看看Commons Collections,更具体地说是CollectionUtils.filter(Collection, Filter)。

另一个选择是Google Guava,它有< code>Iterables.filter(Iterable

选择权在你。

裴存
2023-03-14

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

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

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

 类似资料:
  • 问题内容: 假设您有数百个内存中对象的集合,并且需要查询此List以返回与某些SQL或Criteria(如查询)匹配的对象。例如,您可能有一个“汽车”对象列表,并且想要退回1960年代制造的所有汽车,并以AZ开头的车牌按汽车型号名称排序。 我知道JoSQL,是否有人使用过它,或者对其他/本地解决方案有任何经验? 问题答案: 我已经在生产应用程序中使用过Apache Commons JXPath 。

  • 我有一个关于FireBase的firestore db的问题。 我有一个文档X,它包含一个名为users的字段,它是一个对象,引用了users集合中的用户。 它看起来与此类似: 我如何查询firestore db以获得所有的文档(来自家庭集合),这些文档的用户名为'john'? 我没有运气地尝试了以下几点: 但它只返回一个空数组。 如果我将用户的条目从key:reference切换到key:str

  • 问题内容: 如果我有一个简单的字符串列表: 我可以对它进行排序: 但是假设我有一个Person类: 并列出: 我想有时按名称,有时按年龄,有时按国家对它进行排序。 最简单的方法是什么? 我知道我可以实现Comparable接口,但这似乎限制了我只能通过一个特定的属性对其进行排序。 问题答案: 可以使用自定义比较器调用Collections.sort。并且该比较器可以实现为允许以不同的排序顺序进行排

  • 假设我有一组元素,分为多个集合。每个元素都在一个集合中。 我希望能够尽快执行以下查询: 元素在什么集合中? 哪些元素在set中? 我应该使用什么数据结构?我能想到的最好的方法是一张指向一组集合的地图,但我想知道是否有更好的方法? 如果有帮助,可以假设我的集合是整数

  • 获取查询对象的结果集 // 查询邮箱或密码是否正确 async checkEmailAndPassword(loginData) { // 解构查询对象中的结果 const { dataValues: {id,username,password,email} } = await this.ctx.model.User.findOne({

  • 问题内容: 我有两个Hibernate数据对象。第一个是用户(具有唯一的ID,用户名等),第二个是Collaborateable类。在这两者之间存在n对m的关系(带有Set的实现)。这意味着,一个用户使用许多可协作对象,而一个可协作对象具有许多用户。另外,一个可协作对象只有一个用户作为所有者。 我想实现一个Hibernate查询,该查询搜索具有特定用户作为所有者或在Collaborateable.