gpt4 book ai didi

java - IBM purequery 是否有任何有效的开源替代方案来查询内存中的集合?

转载 作者:行者123 更新时间:2023-12-01 06:28:19 25 4
gpt4 key购买 nike

我们是否有一些 IBM pureQuery 的开源替代品来查询 Java 集合框架的内存中集合或复合 Java 对象?

最佳答案

正如我在评论中提到的,我不完全确定我理解你的问题:我不确定你是否在问是否有 pureQuery 的 OSS 替代品以及 pureQuery 是否适用于 Java 集合框架的内存 DS ,如果您想要一个适用于内存集合的 OSS 替代方案,特别是 Java 集合框架。

但是,我会试一试...

持久层查询语言/框架

如果您正在寻找用于与持久层进行基于查询的交互的开源软件,显而易见的解决方案非常简单:

请注意,这些也可以用于内存数据库(如 H2 或 HSQLDb)。

集合查询语言/框架

但是,如果你想查询集合,有几个项目,比如:

  • the java Query Language (JQL)语言扩展:

    ArrayList<String> words = dict.getWords(Puzzle.MEDIUM);
    ArrayList<Integer> gaplengths = puzzle.getGapLengths();

    List<Object[]> matches = selectAll(
    String w : words,
    Integer i : gaplengths | w.length() == i);
  • the Stack-Based Query Language for Java (sqbl4j)语言扩展:

    List<Product> products = getProductList();
    List<Product> expensiveInStockProducts = #{
    products
    where unitsInStock > 0 and unitPrice > 3.00
    };
  • Java Objects SQL (JoSQL) :

    List myObjs = getMyObjects ();
    Query q = new Query ();
    q.parse ("SELECT * FROM java.io.File WHERE name LIKE '%.java'");
    QueryResults qr = q.execute (myObjs);
    List res = qr.getResults ();
  • jxpath ,对于使用 XPath 表达式的不同方法:

    Address address = (Address)JXPathContext
    .newContext(vendor)
    .getValue("locations[address/zipCode='90210']/address");
  • Java 的函数式编程库提供了类似的功能,因为它们使您可以访问基本的函数式构造 filtermapcollect, transform 等...例如,使用:

    • Google Guava :

      Set<String> strings = buildSetStrings();  
      Collection<String> filteredStrings =
      Collections2.filter(strings, Predicates.containsPattern("^J"));
    • Functional Java :

      Array<Integer> a = array(97, 44, 67, 3, 22, 90, 1, 77, 98, 1078, 6, 64, 6, 79, 42);
      final Array<Integer> b = a.filter(even);
    • LambdaJ :

      // with normal interfaces:
      List<Person> buyersSortedByAges = sort(
      extract(
      select(sales, having(on(Sale.class).getValue(), greaterThan(50000)))
      ), on(Sale.class).getBuyer()
      ), on(Person.class).getAge());

      // with fluent/chainable intefaces:
      List<Person> buyersSortedByAges = with(sales)
      .retain(having(on(Sale.class).getValue(), greaterThan(50000)))
      .extract(on(Sale.class).getBuyer())
      .sort(on(Person.class).getAge());

或者您可能只是在 querying in-memory collections with pureQuery 上寻找本教程?

关于java - IBM purequery 是否有任何有效的开源替代方案来查询内存中的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10990632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com