[解決済み】配列/配列リストよりリンクリストを使用するのはいつ?
質問
私はリストと配列をたくさん使いますが、配列リストがリンクリストと同じくらい、あるいはそれ以上に簡単に使えないというシナリオにまだ出会ったことがありません。 どなたか、リンクリストの方が特に優れている例を教えていただけませんか?
どのように解決するのですか?
リンクリストが配列よりも望ましいのは、以下のような場合です。
-
リストへの挿入/削除を一定時間行う必要がある場合(時間の予測可能性が絶対的に重要なリアルタイムコンピューティングなど)
-
リストに何個のアイテムが入るかわからない。 配列の場合、配列が大きくなりすぎると、メモリの再宣言とコピーが必要になることがあります。
-
要素へのランダムアクセスが必要ない場合
-
リストの途中にアイテムを挿入できるようにしたい場合(プライオリティ・キューのようなもの)。
配列が望ましいのは、次のような場合です。
-
要素へのインデックス付き/ランダムアクセスが必要な場合
-
配列の要素数を事前に把握しておき、 配列に適切な量のメモリを割り当てることができます。
-
すべての要素を順番に反復処理するときに、スピードが必要な場合。 配列の場合はポインタの計算で各要素にアクセスできますが、リンクリストの場合は各要素のポインタに基づいてノードを探す必要があり、その結果ページフォールトが発生してパフォーマンスが低下する可能性があります。
-
メモリが気になる。 充填された配列は、リンクされたリストよりも少ないメモリしか消費しません。 配列の各要素はデータだけです。 リンクリストの各ノードは、データと、リンクリストの他の要素への1つ(またはそれ以上)のポインターを必要とします。
配列リスト(.Net のもの)は、配列の利点を提供しますが、リソースを動的に割り当てるので、リストのサイズをあまり気にする必要がなく、任意のインデックスでアイテムを削除でき、手間や要素の再シャッフルをする必要がありません。 性能面では、アレイリストは生の配列よりも遅くなります。
関連
-
[解決済み] 代入A(:)=Bにおいて、AとBの要素数は同じでなければならない
-
[解決済み] PowerShellの配列から重複する値を削除する
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] なぜList<T>を継承しないのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TypeScriptと配列のリデュース関数
-
[解決済み] Perl の配列を繰り返し処理する最適な方法
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み】Swiftで配列をシャッフルするにはどうすればいいですか?
-
[解決済み】Swiftで配列から重複する要素を削除する
-
[解決済み】Swiftで配列から要素を削除する方法
-
[解決済み】Swiftの配列で要素の合計を求める
-
[解決済み】Bashでスペースで区切られた文字列を配列に読み込む
-
[解決済み] SwiftでArrayの最初の5つのオブジェクトを返すには?
-
[解決済み】配列とリンクリストの比較