2013-10-31 41 views
23

我看保羅飛利浦談話:什麼是Java 8「視圖」?

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

在12:48他說,「在Java中8個人看法實際工作」比較Scala和Java的

當什麼是Java「的意見「什麼是Scala的等價物?

更新:由於丹尼爾的答案,我發現這篇文章有幫助:http://www.scala-lang.org/docu/files/collections-api/collections_42.html

+0

沒有看完整個演講,我假定他指的是Java對語言(或任何語言)應該如何表達的「意見」。 Java「視圖」的一個例子就是這個Oracle文檔:http://www.oracle.com/technetwork/java/simple-142616.html,其中概述了C++和Java之間的區別,並解釋了它們的「刪除」 。 – Radiodef

回答

27

的Java 8的Stream是他所說的觀點是什麼。他們有兩個重要的屬性:

  1. 他們是非嚴格的,這意味着他們只產生按需結果。
  2. 它們將多個操作「融合」在一起,因此您可以執行多個mapfilter調用,並且原始集合仍將僅迭代一次。

斯卡拉的等價物是各種View集合,您可以通過在現有集合上調用.view獲得這些集合。它們確實具有這些屬性 - 畢竟它們是定義的屬性 - 但存在缺陷和錯誤,更不用說是一個非常複雜的實現。

Paul已經爲其啓用和停用了替代實現方式,但它從來不是優先取代它們的優先事項。

+0

我原以爲Scala的流將成爲新的Java 8流的對應物。 Scala視圖的相同問題是否也適用於Scala流? – DaoWen

+3

@DaoWen不,斯卡拉'流'是堅實的。主要抱怨的是,它不是非嚴格的,因爲「頭」是嚴格的。然而,它是一個具有自己特性的集合,與List類似,而視圖或Java的Stream則更像是放置在另一個集合之前的機制。 –