以下、これらのデータ構造の両方の説明: (プログラミング in scala book から)
リンクされたリスト
リンクされたリストは、次のポインターでリンクされたノードで構成される変更可能なシーケンスです。ほとんどの言語では、空のリンク リストとして null が選択されます。空のシーケンスでもすべてのシーケンス メソッドをサポートする必要があるため、これは Scala コレクションでは機能しません。特に、LinkedList.empty.isEmpty は true を返す必要があり、NullPointerException をスローしてはなりません。空の連結リストは、代わりに特別な方法でエンコードされます。それらの次のフィールドは、ノード自体を指します。それらの不変のいとこのように、リンクされたリストは順番に操作するのが最適です。さらに、連結リストを使用すると、要素または連結リストを別の連結リストに簡単に挿入できます。
可変リスト
MutableList は、単一のリンクされたリストと、そのリストの終端の空のノードを参照するポインターで構成されます。これにより、list append は一定時間操作になります。これは、ターミナル ノードを検索するためにリストをトラバースする必要がないためです。MutableList は現在、Scala での mutable.LinearSeq の標準実装です。
主な違いは、型に最後の要素のポインタが追加されたことMutableList
です。
質問は次のとおりLinkedList
ですMutableList
。厳密にはMutableList
(新しいポインターにもかかわらず) 同等であり、使用済みメモリ (最後の要素のポインター) を少し追加するだけでさらに実用的ではありませんか?