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/
其他回答
您可以尝试此库:https://code.google.com/p/qood/
以下是使用它的一些原因:
轻量级:只有9个公共接口/类需要学习。类似SQL的查询:支持groupby、order by、left join、,公式等对于大数据:使用文件(QFS)而不是堆内存。尝试解决对象关系阻抗失配。
没有什么比LINQ for Java更好的了。
...
Edit
现在,在Java8中,我们介绍了StreamAPI,这在处理集合时是一种类似的事情,但它与Linq不同。
如果您正在寻找的是ORM,比如实体框架,那么您可以尝试Hibernate
:-)
对于LINQ(LINQ to Objects),Java 8将有类似的功能,请参见Project Lambda。
它具有Enumerable的LINQ to Objects扩展,如填充。但对于更复杂的LINQ,如表达式和ExpressionTree(如果LINQ to SQL和其他LINQ提供程序希望提供优化和真实的内容,则需要这些),目前还没有任何等效的,但我们可能会在未来看到:)
但我认为未来在Java上不会有类似声明式查询的东西。
有一个叫做quaere的项目。
这是一个Java框架,它增加了查询集合的能力。
注:根据作者的说法,该项目已不再维护。
也许不是你所希望的答案,但如果你的代码的某些部分需要在集合上做大量工作(搜索、排序、过滤、转换、分析),你可以考虑用Clojure或Scala编写一些类。
由于其功能性,使用集合是他们最擅长的。我对Scala没有太多经验,但使用Clojure,您可能会发现一个更强大的Linq,一旦编译,您将生成的类将与其他代码库无缝集成。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 如何检查IEnumerable是否为空或空?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder