1. ホーム
  2. arrays

[解決済み] scalaのArrayとListの違いについて

2022-04-26 10:47:58

質問

どのような場合にArray(Buffer)とList(Buffer)を使えばいいのでしょうか?私が知っている唯一の違いは、配列が非変数で、リストが共変数であることです。しかし、パフォーマンスや他のいくつかの特性についてはどうですか?

どのように解決するのですか?

不変の構造体

Scalaの List は不変の再帰的データ構造であり,Scala の基本的な構造であるため,(おそらくは Array (これは実際には ミュータブル - その 不変のアナログ ArrayIndexedSeq ).

もしあなたがJavaのバックグラウンドを持っているのであれば、明らかに平行して、いつ LinkedList オーバー ArrayList . 前者は、一般に、常に トラバース (一方後者は、サイズ (あるいは最大サイズ) がわかっているリストか、あるいは 高速ランダムアクセス が重要です。

変更可能な構造体

ListBuffer への定数時間変換を提供します。 List を使用する理由はそれだけです。 ListBuffer のように、後で変換する必要がある場合。

scalaの Array は、JVM上ではJavaの配列で実装されているはずです。 Array[Int] の方がはるかにパフォーマンスが高いかもしれません。 int[] よりも List[Int] (この場合、Scalaの最新バージョンで新しい @specialized という機能があります)。

しかし、私は、その使用は Array なぜなら,配列が本当に必要なプリミティブ型に支えられるのか,それともラッパー型としてボックス化されるのかを決定するために,フードの下で何が起こっているのかを知る必要があると感じるからです.