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. IteratorとIterableの違い
- 3. Scala Infinite Iterator OutOfMemory
- 4. Scalaのマップメソッドとforeachメソッドの違いは?
- 5. Scala Stream [Int] #foldLeftとStream [Int] #sumは異なる結果を返します
- 6. StAX Cursor APIとIterator APIの違いは何ですか?
- 7. Scalaの式と文の違い
- 8. jpgファイルの違い:wireshark tcp streamとC++ソケットから
- 9. Scalaのvarとvalの定義の違いは何ですか?
- 10. Scalaでは、AnyとObjectの違いは何ですか?
- 11. ScalaのIntとIntegerの違いは何ですか?
- 12. Scalaのa.ne(null)と!= nullの違いは何ですか?
- 13. Scala(Guice)のコンパニオンオブジェクトとシングルトンクラスの違いは何ですか?
- 14. Stream-cons#はどのようにScalaで翻訳されていますか?
- 15. scala @SerializableとJava Serializableの違いは何ですか?
- 16. IteratorとIEnumerator
- 17. Scalaで類似したカレータイプの違い
- 18. Java EnumerationとIteratorの比較
- 19. STLマップとベクトルのIteratorアクセスパフォーマンスは?
- 20. Scala Akka先物では、mapとflatMapの違いは何ですか?
- 21. Mongo Scala DriverとReactive-Mongo Driverのプレイフレームワークの違いは何ですか?
- 22. Javaゲーム:ArrayListとIteratorとThread
- 23. デバッガとは違い、私はデバッグしているScalaコードですか?
- 24. Elixir StreamのTask.async
- 25. ジェネリックのIteratorで 'extends'
- 26. Convert Boost :: iteratorをstd :: iteratorにマップする
- 27. Iteratorインターフェイス
- 28. std :: insert_iteratorとiteratorの無効化
- 29. Scalaは私がScalaで「シンプルな表現の違法開始」エラーを得た
- 30. const&iterator、またはiteratorだけを使うべきですか?
私はN番目の要素にアクセスすると、アクセス時間はO(1)かO(N)ですか? – ryeguy
@ryeguy Streamは要素値をキャッシュするためのリンクリストを作成するので、O(n)です。 –
OK、StreamとIterableの違いは何ですか? –