ホームページ  >  記事  >  Java  >  ArrayList、LinkedList、Vector の違いは何ですか?

ArrayList、LinkedList、Vector の違いは何ですか?

王林
王林転載
2020-08-06 16:01:034837ブラウズ

ArrayList、LinkedList、Vector の違いは何ですか?

#1. ストレージのデータ構造からの分析

(推奨チュートリアル:

Java 入門チュートリアル)

ArrayList: Array

Vector: Array

LinkedList: 二重リンク リスト

Array: 添字に基づいてすばやく検索できるため、ほとんどの場合、クエリは次のようになります。速い。

ただし、追加および削除操作を実行する場合は、すべての要素を変更された要素の後ろに移動する必要があるため、追加および削除のオーバーヘッドが比較的大きく、配列の追加および削除の実行効率が低下します。削除操作は少ないです。データの格納構造として配列を使用する ArrayList や Vector も同様の特徴を持ち、クエリ速度は速い(添え字に基づいて直接取得できるため反復検索より速い)、追加や削除は遅いです。

リンクリスト: ノード間の参照を扱うだけで要素の追加や削除ができるので便利です。並んで手をつなぐのと同じように、誰かを追加・削除したい場合も、近くにいる2人を別の人に変更するだけで、すでに手をつなぐ人には影響しません。代替によって消費されるリソースと時間はどこでも同じです。

しかし、クエリは不便で、1つずつ比較する必要があり、添え字に基づいて直接検索することはできません。リンク リスト構造で格納される LinkedList にもこれらの特性があり、追加と削除は簡単ですが、クエリが遅くなります (シーケンシャル クエリではなく、ランダム クエリを指します)。

2. 継承の観点からの分析

ArrayList、LinkedList、Vector の違いは何ですか?

これらはすべて List インターフェイスを実装しています。つまり、すべて get(int を実装しています) location )、remove(int location) などの「インデックス値に基づいてノードを取得および削除する関数」。

(ビデオチュートリアルの推奨:

java ビデオチュートリアル)

添字に従って配列構造の値を取得するのは簡単で、双方向の LinkedList の実装も可能です。 list もインデックス値をカウントする比較的単純な実装です 実装する場合は、連結リストの長さの 1/2 から検索を開始します 添字が大きい場合はリストの先頭から検索を開始します 添字が小さい場合はリストの先頭から検索しますリストの最後から検索を開始します。

3. 同時実行安全性の観点からの分析

Vector: スレッド セーフティ

ArrayList: 非スレッド セーフティ

LinkedList : 非スレッド セキュリティ

4. データ増加分析

ベクトル: デフォルトでは、増加は元の配列の長さの 2 倍になります。デフォルトについて言えば、実際には初期化サイズを個別に設定できることを意味します。

ArrayList: 元の配列の 50% を自動的に拡大します。

以上がArrayList、LinkedList、Vector の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。