Java 7中的java流

Ath*_*oud 23 java java-stream

我的问题可能过于宽泛,可能答案很简单,但我不得不问.

Java 7中是否有(Java 8)*的等效实现?

我熟悉(Java 8)流,但我的项目要求是使用Java 7.

*不要与inputStreamoutputStream混淆.

Ale*_* C. 25

在官方API中,没有.

没有针对Java 7的公开更新.如果您是客户,您可能仍会获得较小的更新,但这不会(或非常非常非常不可能)反向传输Stream API.

通过一些挖掘,您可以查看StreamSupport.我从未测试过它,但显然它的目标是将Stream API向后移植到Java 6/7,如果你想将它与lambda表达式结合起来,那么还有retrolambda.

功能Java可能很有趣.它与Stream API的意图不完全相同,但如果您的目标是过滤/映射/等.列表/数组可能符合您的需求.对于例如:

final List<Integer> b = list(1, 2, 3).map(add.f(-1));
listShow(intShow).println(b); // [0, 1, 2]
Run Code Online (Sandbox Code Playgroud)

最后,您可以查看Scala的Stream API.当Scala也在JVM上运行时,您可以混合使用代码.也许这不是你想要的,但如果需要的话,值得一试.

  • 将java与scalla代码混合的想法非常有趣.streamsupport也是很好的方式. (2认同)
  • @ mschenk74我没有说它不应该用于生产环境.您可能会获得较小的更新,但我想指出这些更新不太可能将Stream API反向移植到Java 7,IMO中. (2认同)

mav*_*ato 8

Google的Guava库包含Java版本5到7的一些功能习惯用法:

https://github.com/google/guava/wiki/FunctionalExplained

此外,您可能需要检查这个库(我几分钟前在执行Google搜索时没有听说过它:-))

http://www.functionaljava.org/