LINQ的Java等价物是什么?
当前回答
与2014年一样,我终于可以说LINQ终于在java8中出现了。因此,不再需要寻找LINQ的替代品。
其他回答
有一个替代的解决方案,库利选择。
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();
Lambdas现在以JSR-335的形式在Java8中提供-用于JavaTM编程语言的Lambda表达式
更新:JDK8现已发布,其中包含lambda项目。值得一提的是,目前仍然是MEAP的Java 8 in Action。
阅读Brian Goetz关于lambdas的文章,了解如何在JDK8中实现lambdas,同时了解流、内部迭代、短路和构造函数引用。。还要查看上面的JSR以获得更多示例。
我写了一篇关于在JDK8中使用lambdas的一些优点的博客,名为the Power of the Arrow,NetBeans 8也非常支持将构造转换为JDK8,我也写了一个关于使用NetBeans迁移到JDK8的博客。
对于基本的函数集合,Java8内置了它,大多数主要的非Java JVM语言(Scala、Clojure等)都内置了它。
对于SQL数据库的完全语言集成访问,Scala(在JVM上运行)具有Slick
一位匿名用户提到了另一个,Diting:
Diting是一个类库,它通过可链接方法和匿名接口(如.NET中的Linq)提供对集合的查询功能。与大多数其他使用静态方法的集合库不同,Diting提供了一个核心Enumerable类,该类包含可链接方法以实现对集合或数组的查询。支持的方法:any、cast、contact、contains、count、distinct、elementAt、except、first、firstOrDefault、groupBy、interset、join、last、lastOrDefault、ofType、orderBy、orderByDescending、reverse、select、selectMany、single、singleOrDefault、skip、skipWhile、take、takeWhile、toArray、toArrayList、union,其中
有编程语言Pizza(一个Java扩展),你应该看看它。-它使用“流畅接口”的概念以声明方式查询数据,这在原则上与LINQ w/o查询表达式相同(http://en.wikipedia.org/wiki/Pizza_programming_language). 但遗憾的是,这并没有被追求,但这将是将类似LINQ的东西引入Java的一种方式。
推荐文章
- 在流中使用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