LINQ的Java等价物是什么?
当前回答
对于LINQ(LINQ to Objects),Java 8将有类似的功能,请参见Project Lambda。
它具有Enumerable的LINQ to Objects扩展,如填充。但对于更复杂的LINQ,如表达式和ExpressionTree(如果LINQ to SQL和其他LINQ提供程序希望提供优化和真实的内容,则需要这些),目前还没有任何等效的,但我们可能会在未来看到:)
但我认为未来在Java上不会有类似声明式查询的东西。
其他回答
Java有许多LINQ等价物,请参阅此处进行比较。
对于类型安全的Quaere/LINQ风格框架,请考虑使用Querydsl。Querydsl支持JPA/Hibernate、JDO、SQL和Java集合。
我是Querydsl的维护者,所以这个答案有失偏颇。
有一个非常好的图书馆,你可以用来做这个。
位于此处:https://github.com/nicholas22/jpropel-light
Lambdas要到Java8才能使用,所以使用它有点不同,感觉不太自然。
没有什么比LINQ for Java更好的了。
...
Edit
现在,在Java8中,我们介绍了StreamAPI,这在处理集合时是一种类似的事情,但它与Linq不同。
如果您正在寻找的是ORM,比如实体框架,那么您可以尝试Hibernate
:-)
您可以尝试此库:https://code.google.com/p/qood/
以下是使用它的一些原因:
轻量级:只有9个公共接口/类需要学习。类似SQL的查询:支持groupby、order by、left join、,公式等对于大数据:使用文件(QFS)而不是堆内存。尝试解决对象关系阻抗失配。
除非您使用javacc创建自己的等效程序,否则您将找不到LINQ的等效程序。
在有人找到可行的方法之前,还有一些好的选择,比如
jOOQ公司金克牌手表JaQue公司JaQu公司Linq4j公司码头(不再维护)查询DSLJSR-341型
推荐文章
- 转换列表的最佳方法:map还是foreach?
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- Mockito.any()传递带有泛型的接口
- 在IntelliJ 10.5中运行测试时,出现“NoSuchMethodError: org.hamcrest. matcher . descripbemismatch”
- 使用String.split()和多个分隔符
- Java数组有最大大小吗?
- 在Android中将字符串转换为Uri
- 从JSON生成Java类?
- 为什么java.util.Set没有get(int index)?
- Swing和AWT的区别是什么?
- 为什么Java流是一次性的?
- 四舍五入BigDecimal *总是*有两位小数点后
- 设计模式:工厂vs工厂方法vs抽象工厂
- Java:检查enum是否包含给定的字符串?