【问题标题】:What is a Java 8 "view"?什么是 Java 8“视图”?
【发布时间】:2013-10-31 23:59:48
【问题描述】:

我正在观看 Paul Philips 的演讲:

http://www.youtube.com/watch?v=TS1lpKBMkgg

在 12:48,他在比较 Scala 和 Java 时说“在 Java 8 中,他们的观点确实有效”

什么是 Java“视图”,什么是 Scala 的等价物?

更新:感谢丹尼尔的回答,我发现这篇文章很有帮助:http://www.scala-lang.org/docu/files/collections-api/collections_42.html

【问题讨论】:

  • 如果不看整个讲座,我认为他指的是 Java 对语言(或任何语言)应该如何的“观点”。 Java“视图”的一个示例是这个 Oracle 文档:oracle.com/technetwork/java/simple-142616.html,它概述了 C++ 和 Java 之间的差异,并解释了它们“删除”的理由。

标签: java scala java-8


【解决方案1】:

Java 8 的Stream 是他所说的视图。它们有两个重要的属性:

  1. 它们是非严格的,这意味着它们仅按需生成结果。
  2. 它们将多个操作“融合”在一起,因此您可以进行多次mapfilter 调用,而原始集合仍将仅迭代一次。

Scala 的等价物是各种View 集合,您可以通过在现有集合上调用.view 来获得这些集合。它们确实具有这些属性 - 毕竟它们是定义属性 - 但存在缺陷和错误,更不用说非常复杂的实现了。

Paul 一直在玩弄它的替代实现,但从来没有优先取代它们。

【讨论】:

  • 我原以为 Scala 的流将是新的 Java 8 流的对应物。 Scala 视图的相同问题是否也适用于 Scala 流?
  • @DaoWen 不,Scala Stream 是可靠的。对它的主要抱怨是它不像它可能的那样不严格,因为head 是严格的。然而,它是一个有自己特点的集合,类似于List,而视图或Java 的Stream 更像是一种置于另一个集合前面的机制。
猜你喜欢
  • 1970-01-01
  • 2014-12-19
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 2020-08-26
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多