Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有任何有效的开源替代IBMpureQuery来查询内存集合?_Java_Data Structures_Collections - Fatal编程技术网

Java 是否有任何有效的开源替代IBMpureQuery来查询内存集合?

Java 是否有任何有效的开源替代IBMpureQuery来查询内存集合?,java,data-structures,collections,Java,Data Structures,Collections,我们是否有一些IBM pureQuery的开源替代品来查询Java集合框架的内存集合或复合Java对象?如我在评论中所述,我不能完全确定我是否理解你的问题:我不确定你是否在问pureQuery是否有OSS替代品,pureQuery是否可以在Java集合框架的内存DS上工作,或者你是否想要一个OSS aternative可以在内存集合上工作,特别是Java集合框架 但是,我会试试看 持久层查询语言/框架 如果您正在寻找一种开源软件,用于与持久层进行基于查询的交互,那么显而易见的解决方案非常简单:

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

如我在评论中所述,我不能完全确定我是否理解你的问题:我不确定你是否在问pureQuery是否有OSS替代品,pureQuery是否可以在Java集合框架的内存DS上工作,或者你是否想要一个OSS aternative可以在内存集合上工作,特别是Java集合框架

但是,我会试试看

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

  • 这个,
  • 这个,
  • 这个
请注意,它们也可以用于内存中的数据库(如H2或HSQLDb)

集合查询语言/框架 但是,如果要查询集合,有几个项目,如:

  • 语言扩展:

    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);
    
    List<Product> products = getProductList();
    List<Product> expensiveInStockProducts = #{
        products 
        where unitsInStock > 0 and unitPrice > 3.00
    };
    
  • ,对于使用XPath表达式的不同方法:

    Address address = (Address)JXPathContext
        .newContext(vendor)
        .getValue("locations[address/zipCode='90210']/address");
    
  • Java函数式编程库提供了类似的功能,因为它们允许您访问基本的函数构造
    过滤器
    映射
    收集
    转换
    等。。。例如:

    • :

      Set strings=buildSetStrings();
      收集过滤器字符串=
      Collections2.filter(字符串、谓词.containsPattern(^J));
      
    • :

      Array a=Array(97,44,67,3,22,90,1,77,98,1078,6,64,6,79,42);
      最终阵列b=a.滤波器(偶数);
      
    • :

      //具有正常接口:
      List BuyerSortedBages=排序(
      提取(
      选择(sales,have(on(Sale.class).getValue(),大于(50000)))
      ),on(Sale.class).getBuyer()
      ),在(Person.class.getAge())上;
      //使用流畅/可链接的界面:
      列出买家SortedBages=带(销售)
      .retain(具有(on(Sale.class).getValue(),大于(50000)))
      .extract(在(Sale.class.getBuyer()上)
      .sort(在(Person.class.getAge()上);
      


或者,您可能只是想在?

以及支持索引和查询的CQEngine上查找本教程:


有关更多背景信息,请参阅类似问题:

我不确定您是否询问是否有替代pureQuery的OSS,pureQuery是否可以在Java Collection Framework的内存DS上工作,或者您是否希望OSS aternative可以在内存集合上工作,具体包括Java collections Framework。谢谢!如果你能更新你的答案,那将是很酷的,因为它包含了许多看起来没有维护的项目。也许现在有一些新的选择?就像下面提到的引擎。。。
Address address = (Address)JXPathContext
    .newContext(vendor)
    .getValue("locations[address/zipCode='90210']/address");
Set<String> strings = buildSetStrings();  
Collection<String> filteredStrings =
    Collections2.filter(strings, Predicates.containsPattern("^J"));  
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);
// 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());