当前位置: 首页 > 知识库问答 >
问题:

我使用了Guava的不可变集合(为Java6编译)和Java8 JRE,我可以使用新的流接口吗?

陆臻
2023-03-14

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

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

共有1个答案

欧阳睿范
2023-03-14

是的。你可以。

Collection接口中定义的.stream()方法有一个默认实现。因此,.parallelstream().spliterator()也是如此。并且列表都是集合

它并没有到此为止,因为您还可以在Guava的IMMUTABLEMAP上使用map.foreach()map确实有其他默认操作,但它们会改变映射,而Guava的不可变集合/映射是...嗯...

请注意,通常情况下,每当接口的方法具有默认实现时,都会在javadoc中提到它,因为该方法的返回类型前面会有default关键字。

一些非常简陋的示例代码可以工作并利用它(以及lambdas中使用的单个抽象方法的概念,更多细节请参见此处):

ImmutableSet.of(23, 2389, 19).stream().forEach(System.out::println);

(system.outprintstream,其.println()方法签名与使用者方法签名相同)

 类似资料:
  • 问题内容: 我真的很喜欢Java 8流和Guava的不可变集合,但是我不知道如何将两者一起使用。 例如,如何实现将流结果收集到ImmutableMultimap中的Java 8 Collector? 优点:我希望能够提供键/值映射器,类似于Collectors.toMap()的工作方式。 问题答案: 从21版开始,您可以

  • 对于标准JS对象,可以使用解构赋值,例如: 正如一些Flux/Redux传教士所建议的,我使用immutable。我的应用程序的js;我可以在不可变列表/映射上也使用解构吗?当然,我们可以做到: 但是,随着对象变得越来越大,这似乎效率很低(因为首先需要对对象进行深度JS化)。

  • 我正在编写一些从第三方库扩展类的JUnit测试。超级类扩展了,所以根据定义,我的子类也扩展了。 在我的子类中,我用前缀编写测试方法,然后执行这些方法。 但是,出于许多原因,我们希望转移到JUnit4(其中一个原因是,我们不希望必须在测试方法前缀) 我尝试过使用JUnit4注释简单地编写新测试,但这些方法没有得到执行。 例如: 不扩展第三方测试类不是一个选项。(值得注意的是,Spring的又扩展了其

  • 问题内容: 我正在学习Scala,并好奇是否有可能: 创建一个在Scala中实现Java接口的对象 将对象编译成类文件并将其打包 使用Java中的对象 我想在Scala中实现自定义Lucene查询解析器,并能够让其他人从Java应用程序访问它。 问题答案: 我假设“对象”实际上是“类”。无论如何,答案是肯定的,您可以这样做。如果您希望所有这些都在同一项目中,则需要利用Scala / Java联合编

  • 问题内容: 我想将通用映射分组到中,但不能使用,因为我的实体已经扩展了另一个。所以我需要一个类似下面的界面: 我想像下面这样使用它: 我的意思是说这项工作可行吗? 我可以在接口上使用@MappedSuperclass注释吗? Hibernate是否支持接口? 问题答案: 号如前所述这里: JPA不直接支持接口或变量关系。

  • 使用wsgen生成WSDL时,是否可以使用接口作为服务endpoint接口? 当我尝试这样做时,我得到一个错误:-类“com.nimble.sample.Calc”不是endpoint实现类。 CXF工作正常,但这个问题只有在使用JAX-WS时才会出现