我们是否有一些 IBM pureQuery 的开源替代品来查询 Java 集合框架的内存中集合或复合 Java 对象?
最佳答案
正如我在评论中提到的,我不完全确定我理解你的问题:我不确定你是否在问是否有 pureQuery 的 OSS 替代品以及 pureQuery 是否适用于 Java 集合框架的内存 DS ,如果您想要一个适用于内存集合的 OSS 替代方案,特别是 Java 集合框架。
但是,我会试一试...
持久层查询语言/框架
如果您正在寻找用于与持久层进行基于查询的交互的开源软件,显而易见的解决方案非常简单:
- Java Persistence Query Language ,
- Hibernate Query language (HQL) ,
- Java Data Objects (JDO) Query Language (JDOQL) .
请注意,这些也可以用于内存数据库(如 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 };
-
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 的函数式编程库提供了类似的功能,因为它们使您可以访问基本的函数式构造
filter
、map
、collect
,transform
等...例如,使用:-
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);
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/