[解決済み】ScalaでVectorを選択するのはどんなとき?
質問
どうやら
Vector
はScalaコレクション・パーティに遅刻し、影響力のあるブログ記事はすべてすでに去っていました。
Javaで
ArrayList
はデフォルトのコレクションです。
LinkedList
しかし、それはアルゴリズムを考え尽くし、最適化するのに十分な注意を払った場合のみです。Scalaでは
Vector
をデフォルトの
Seq
とか、いつ
List
の方がより適切なのでしょうか?
どのように解決するのですか?
原則として、デフォルトで
Vector
. よりも高速です。
List
に対して
ほとんど
を使用し、自明なサイズより大きなシーケンスに対してはよりメモリ効率が良くなります。こちらをご覧ください。
ドキュメント
他のコレクションと比較したVectorの相対的な性能について。を使用することには、いくつかの欠点があります。
Vector
. 具体的には
-
ヘッドでの更新は、以下のように遅くなります。
List
(ただし、あなたが考えるほどではありません)
Scala 2.10以前のもう一つの欠点は、パターンマッチングのサポートが
List
しかし、これは2.10で修正され、一般化された
+:
と
:+
エクストラクタを使用します。
また、より抽象的、代数的な方法でこの問題にアプローチすることもできます:どのようなシーケンスで
概念的に
を持っていますか? また、あなたは何を
概念的に
を使用していますか? を返す関数があったら
Option[A]
ということは、その関数はドメインに穴がある(つまり部分的である)ことがわかります。 これと同じ論理をコレクションに適用することができる。
型のシーケンスを持っている場合
List[A]
という2つのことを主張していることになる。 第一に,私のアルゴリズム(とデータ)は完全にスタック構造である. 第二に,このコレクションで行うのは完全なO(n)トラバーサルだけであると断言している. この2つは本当に密接に関係している。 逆に,もし私が
Vector[A]
は、その
だけ
というのは、私が主張しているのは、私のデータがきちんと定義された順序と有限の長さを持っているということです。 従って、アサーションは
Vector
そのため、柔軟性に優れています。
関連
-
[解決済み] ベクトルが与えられた要素を含むかどうかをテストする
-
[解決済み] GSON JsonObject "Unsupported Operation Exception: null" getAsString
-
[解決済み] NotUsedとDoneの理解
-
[解決済み] TimeoutExceptionが発生した場合、どのような原因が考えられるでしょうか。Sparkで作業しているときに[n秒]後にFuturesがタイムアウトしました[重複]。
-
[解決済み] std::vector にある項目が存在するかどうかを調べるには?
-
[解決済み] なぜJavaのVector(およびStack)クラスは時代遅れ、または非推奨とされているのですか?
-
[解決済み] Scalaのオブジェクトとクラスの違い
-
[解決済み] Scalaのcase classとclassの違いは何ですか?
-
[解決済み] スカラズのイテレート。「より大きな」モナドのために `EnumeratorT` を `IterateeT` にマッチングさせる「リフティング」。
-
[解決済み】レイジーバルって何するもの?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AWSのためのScala SDKまたはインターフェースはありますか?
-
[解決済み] NoClassDefFoundError: org/apache/hadoop/fs/StreamCapabilities (s3データをsparkで読み込む際に発生します。
-
[解決済み] Scala 無名クラスでextendsを使用する方法
-
[解決済み] データフレームを複数回グループ化する
-
[解決済み] scalaのforeachループ
-
[解決済み】タイプセーフのenum型をモデル化する方法は?
-
[解決済み】コマンドラインパラメータを解析する最良の方法?[クローズド]
-
[解決済み】Scalaで変数をキャストする方法は?
-
[解決済み] Spark SQLでカラムの降順でソートするには?
-
[解決済み] Clojureでは、どのような場合にリストよりベクトルを使うべきですか、またその逆は?