LINQ的Java等价物是什么?
当前回答
LINQ to Objects-JAVA 8添加了流API,它增加了对值流的函数式操作的支持:
包java.util.stream
Java 8解释:将Lambdas应用于Java集合
LINQ to SQL/Nibernate/等。(数据库查询)-一种选择是使用JINQ,它也使用了新的JAVA 8功能,于2014年2月26日在Github上发布:https://github.com/my2iu/Jinq
Jinq为开发人员提供了一种简单自然的数据库编写方法Java中的查询。您可以像对待普通Java对象一样对待数据库数据存储在集合中。您可以使用正常的Java命令,所有代码将自动转换为优化的数据库查询。最后,LINQ风格查询可用于Java!
JINQ项目现场:http://www.jinq.org/
其他回答
Java有许多LINQ等价物,请参阅此处进行比较。
对于类型安全的Quaere/LINQ风格框架,请考虑使用Querydsl。Querydsl支持JPA/Hibernate、JDO、SQL和Java集合。
我是Querydsl的维护者,所以这个答案有失偏颇。
只需添加另一个备选方案:Java6确实有一个使用javax.persistence.ccriteria包的类型安全数据库查询解决方案。
尽管我必须说,这不是真正的LINQ,因为使用LINQ可以查询任何IEnumerable。
对于基本的函数集合,Java8内置了它,大多数主要的非Java JVM语言(Scala、Clojure等)都内置了它。
对于SQL数据库的完全语言集成访问,Scala(在JVM上运行)具有Slick
有一个替代的解决方案,库利选择。
Coolection并没有假装是新的lambda,但是我们周围都是旧的遗留Java项目,这个库将对我们有所帮助。它的使用和扩展非常简单,只涵盖集合上最常用的迭代操作,例如:
from(people).where("name", eq("Arthur")).first();
from(people).where("age", lessThan(20)).all();
from(people).where("name", not(contains("Francine"))).all();
没有什么比LINQ for Java更好的了。
...
Edit
现在,在Java8中,我们介绍了StreamAPI,这在处理集合时是一种类似的事情,但它与Linq不同。
如果您正在寻找的是ORM,比如实体框架,那么您可以尝试Hibernate
:-)
推荐文章
- JavaFX应用程序图标
- Java:强/软/弱/幻影引用的区别
- 在序列化和反序列化期间JSON属性的不同名称
- 获取Android设备名称
- Gradle代理配置
- 如何获得具有已知资源名称的资源id ?
- 在Android上将字符串转换为整数
- 为什么“System.out。”println“工作在Android?
- 在Java中什么时候使用可变参数?
- Mockito的argumentCaptor的例子
- 我如何告诉Spring Boot哪个主类用于可执行jar?
- 如何将Java8流的元素添加到现有的列表中
- 在Java 8中是否可以转换流?
- 不区分大小写的字符串作为HashMap键
- 什么是maven中的“pom”打包?