LINQ的Java等价物是什么?
当前回答
您可以使用lambdaj库以更易读的方式选择集合中的项目(以及更多)
https://code.google.com/archive/p/lambdaj/
它比Quaere库有一些优势,因为它不使用任何魔法字符串,它完全是类型安全的,在我看来,它提供了一个更可读的DSL。
其他回答
JaQu是Java的LINQ等价物。虽然它是为H2数据库开发的,但它应该适用于任何数据库,因为它使用JDBC。
查看tiny-q。(请注意,您当前无法下载。)
下面是一个适用于上述链接的示例:
首先,我们需要一些数据的集合,比如一组字符串
String[] strings = { "bla", "mla", "bura", "bala", "mura", "buma" };
现在我们只选择以“b”开头的字符串:
Query<String> stringsStartingWithB = new Query<String>(strings).where(
new Query.Func<String, Boolean>(){
public Boolean run(String in) {
return in.startsWith("b");
}
}
);
没有实际的数据被复制或类似的东西,一旦你开始迭代,它就会被处理:
for(String string : stringsStartingWithB ) {
System.out.println(string);
}
既然Java8支持lambdas,就可以创建与LINQ非常相似的JavaAPI了。
Jinq是这些新的LINQ风格的Java库之一。
我是这个库的开发人员。它基于五年来使用字节码分析将Java转换为数据库查询的研究。类似于C#的D-LINQ是一个位于实体框架之上的查询层,Jinq能够充当JPA或jOOQ之上的一个查询层。它支持聚合、组和子查询。就连埃里克·梅杰(LINQ的创始人)也承认了金克。
没有什么比LINQ for Java更好的了。
...
Edit
现在,在Java8中,我们介绍了StreamAPI,这在处理集合时是一种类似的事情,但它与Linq不同。
如果您正在寻找的是ORM,比如实体框架,那么您可以尝试Hibernate
:-)
有编程语言Pizza(一个Java扩展),你应该看看它。-它使用“流畅接口”的概念以声明方式查询数据,这在原则上与LINQ w/o查询表达式相同(http://en.wikipedia.org/wiki/Pizza_programming_language). 但遗憾的是,这并没有被追求,但这将是将类似LINQ的东西引入Java的一种方式。
推荐文章
- 指定的子节点已经有一个父节点。你必须先在子对象的父对象上调用removeView() (Android)
- 对于一个布尔字段,它的getter/setter的命名约定是什么?
- 如何获得当前屏幕方向?
- 如何在Android中渲染PDF文件
- 如何计算一个元素在列表中出现的次数
- c++中类似于java的instanceof
- 我如何解决错误“minCompileSdk(31)指定在一个依赖的AAR元数据”在本机Java或Kotlin?
- 如何POST表单数据与Spring RestTemplate?
- Mockito中检测到未完成的存根
- 我应该如何复制字符串在Java?
- “while(true)”循环有那么糟糕吗?
- LINQ组通过到一个字典对象
- 这个方法签名中的省略号(…)是干什么用的?
- Java:如何测试调用System.exit()的方法?
- 带有返回类型的Java方法在没有返回语句的情况下编译