IteratorとStreamの両方が怠惰で、あなたの心臓のコンテンツに要素を戻すことができるようです。両者の違いは何ですか?ScalaのIteratorとStreamの違いは?
答えて
ストリームmemoisesとイテレータはありません。同じStreamを何度もトラバースし、毎回同じ結果を得ることができます。一方、反復子は、一度しか移動できません。
これらは、現在の要素にアクセスするための構成要素であり、残りの要素の一覧(未知の尾)はまだありません。
Iterator
は、一度しかトラバースできない必須の構成です。
Stream
は機能的構築物である。理論的には、それを複数回トラバースすることができます(また、他のものと同様に、すでに計算された部分を再計算することはありません)。実際には、ストリームは無限大または非常に大きい(つまり、それを最初に使用する理由)フルストリームへの参照はあまり意味がありません(あなたはOut of Memoryをかなり簡単に実行します)。
- したがって、あなたは常には
def
を使用してストリームを定義し、長寿命のスコープを持っているローカル変数に入れてはいけません。 - Streamsを使用して再帰関数を書くときに微妙な点もありますが、
- Scalaの
Stream
は、一般的に、それはに心に安全です
のように、その頭の中で怠惰ではないという事実に起因するいくつかの予期しない動作がある場合もあります平文は避けてください。Stream
s。代わりに弱参照を使用して、またはIteratees(hereも参照)またはsomething similiarを使用して、未参照の部分を自動的に忘れるScalazのEphemeralStream
を使用しています。
私は不思議です:なぜEphemeralStreamはデフォルトの実装ではありませんか?忘れた部分は、データ系統(関数型言語)からいつでも再構築できます。これは大きなデザイン上の欠陥のようです。 – tribbloid
- 1. scalaz Iterator from scala Iterator
- 2. scala iteratorのテール
- 3. Scala - Stream APIフィルタメソッドとリストwithFilterメソッドの違い
- 4. IteratorとIterableの違い
- 5. Scala Infinite Iterator OutOfMemory
- 6. Amazon Kinesis StreamとJava Streamの違いは何ですか?
- 7. Scalaの&と&&の違いは?
- 8. Scalaのマップメソッドとforeachメソッドの違いは?
- 9. タプルとリストの違いは?Scalaの[Any]?
- 10. StAX Cursor APIとIterator APIの違いは何ですか?
- 11. Scala Stream [Int] #foldLeftとStream [Int] #sumは異なる結果を返します
- 12. Scala: "insideから" Iteratorに値を渡す
- 13. Scalaの式と文の違い
- 14. Scalaのプロシージャとファンクションの違い
- 15. scalaオプションのタイプの違い
- 16. jpgファイルの違い:wireshark tcp streamとC++ソケットから
- 17. java.util.stream.StreamをScala Streamに変換する
- 18. ScalaのStream [java.io.File]にあるデータを照会するには?
- 19. Scalaのvarとvalの定義の違いは何ですか?
- 20. Scalaでは、AnyとObjectの違いは何ですか?
- 21. ScalaのArrayとWrappedArrayの違いは何ですか
- 22. ScalaのJsObjectとJsValueの違いは何ですか?
- 23. ScalaのNodeとElemの違いは何ですか?
- 24. IntelliJのSBTプロジェクトとScalaモジュールの違いは何ですか?
- 25. ScalaのshouldBeとshouldEqualの違いは何ですか?
- 26. Spark/Scalaのarray.mapとrdd.mapの違いは何ですか?
- 27. Scalaのa.ne(null)と!= nullの違いは何ですか?
- 28. ScalaのArrayとArray [Type]の違いは何ですか?
- 29. List $ SerializationProxyとScala 2.11のListの違いは何ですか?
- 30. ScalaのIntとIntegerの違いは何ですか?
私はN番目の要素にアクセスすると、アクセス時間はO(1)かO(N)ですか? – ryeguy
@ryeguy Streamは要素値をキャッシュするためのリンクリストを作成するので、O(n)です。 –
OK、StreamとIterableの違いは何ですか? –