JavaのベクトルとArrayListのは、相違を解決します

ベクターは、AbstractListを継承リスト、ランダム・、Cloneableを、java.io.Serializableの、かつ一貫性のArrayListを実装します

ベクターは、実質的にArrayListのと一致しているが、以下では、いくつかの違いです

1つの初期化
ベクトルは、長さ10のArrayListの配列を初期化した後、特定のコールにアレイを作成する引数なしのデフォルトのコンストラクタ。
比較して、ローディングのArrayListの遅延少ないスペース
2膨張((成長))
ベクトル増分が0であり、二回元のサイズに拡大デルタが0より大きい場合、元のサイズインクリメントArrayListの拡張に拡張アルゴリズム:元の配列に加えて、配列の半分の元のサイズ
のベクターは、私はC ++やJavaのベクトルベクトルの原理が一貫していなければならないと信じて膨張空間の無駄な道を選んだ理由、https://www.zhihu.com/question/36538542/answer / 67929747
。3セキュリティスレッド
ベクトルは、スレッドセーフであり、スレッドセーフではないArrayListの
スレッドセーフクラスベクトルは、その内部イテレータクラスListItrを実装含みます

実際には、最大の違いは、我々はスレッドセーフのArrayListを作成したい場合は、()、静的な内部クラスのSynchronizedList、同期コードブロックの処理のArrayListを取得Collections.synchronizedListを呼び出すことができ、もちろん、そのスレッドの安全性です。
このスレッドセーフな方法は、ArrayListのを取得するとベクトルの違いは何ですか?もう一つのポイントが無視できない、元の同期実装イテレータ手動で制御するためにユーザを必要とする非常に単純な、同期ブロックと同期方法、残りの違いの1つは、ArrayListに、ベクトルセキュリティスレッドが他の違いに加えて、あります

 public ListIterator<E> listIterator() {
            return list.listIterator(); // Must be manually synched by user
        }

これはSynchronizedListイテレータの取得で

しかし、Collections.synchronizedList()List型のパラメータに、他の実装クラスは、LinkedListのリストとして渡すことができます

おすすめ

転載: www.cnblogs.com/elinlinlinlog/p/11402997.html