首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我使用Guava的不可变集合(为Java 6编译)和Java 8 JRE,我可以使用新的流接口吗?

我使用Guava的不可变集合(为Java 6编译)和Java 8 JRE,我可以使用新的流接口吗?
EN

Stack Overflow用户
提问于 2014-03-26 19:56:05
回答 2查看 764关注 0票数 7

我使用Guava,特别是它们的不可变集合(ImmutableListImmutableSet)。

但是Guava是为Java6编译的,如果我使用Java8,我可以在它们上使用.stream()吗?

EN

回答 2

Stack Overflow用户

发布于 2014-03-26 19:56:17

是的你可以。

Collection接口has a default implementation中定义的.stream()方法。就此而言,.parallelStream().spliterator()也是如此。并且List%s和Set%s“都是”Collection%s。

而且它并没有到此为止,因为您还可以在Guava的ImmutableMaps上使用Map's .forEach()Map确实有其他的默认操作,但是它们改变了映射,并且Guava的不可变的集合/映射是...好吧..。

注意,更一般的情况是,每次接口的方法有一个缺省实现时,它的返回类型都会在javadoc中被提及,因为该方法的返回类型前面将带有关键字default

一些样本,非常粗糙的代码,可以工作并利用它(以及lambdas中使用的单个抽象方法的概念,请参阅here了解更多细节):

代码语言:javascript
复制
ImmutableSet.of(23, 2389, 19).stream().forEach(System.out::println);

(System.outPrintStream,其.println() method签名与Consumer相同)

票数 12
EN

Stack Overflow用户

发布于 2014-03-26 20:09:59

由于ImmutableList实现了CollectionIterable,这是Java 8提供的接口,对于您列举的方法具有默认实现,所以您给出的答案并不令人惊讶,对吧?

也许这个问题应该重申一下:ImmutableList是否实现了CollectionIterable?因为如果是这样的话,Java 8提供的所有默认方法都是可用的。特别是:.stream().parallelStream().spliterator()

但是,答案只需要查找Guava提供的JavaDoc,这也不是什么大问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22660268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档