1. ホーム
  2. java

[解決済み] ArrayListとVectorの違いは何ですか?

2022-03-25 13:19:24

質問

2つのデータ構造の違いは何ですか? 配列リスト ベクター また、それぞれをどこで使うべきでしょうか?

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

相違点

  • ベクターは同期化され、ArrayListは同期化される。 はありません。
  • データ増加方法

Vectorを使用する特別な要件がない場合は、ArrayListを使用します。

同期化

複数のスレッドがArrayListに同時にアクセスする場合、リストを構造的に変更するか、単に要素を変更するコードのブロックを外部で同期させる必要があります。構造的な変更とは、リストへの要素の追加または削除を意味します。既存の要素の値を設定することは、構造的な変更ではありません。

Collections.synchronizedList は通常、リストの作成時に使用し、リストへの偶発的な非同期アクセスを回避します。

データの増加

内部的には、ArrayListもVectorもArrayを使って内容を保持しています。ArrayListやVectorに要素が挿入されたとき、そのオブジェクトに余裕がなくなると、内部の配列を拡張する必要があります。 Vectorはデフォルトで配列のサイズが2倍になり、ArrayListは配列のサイズが50%増加します。