ArrayListとVectorの違い
類似点:
1.配列とベクトルはどちらも同じ親クラスを継承し、同じインターフェイスを実装します。
2。下層は配列によって実装されます
3.初期デフォルトの長さは10です。
違い:
1。同期:
ベクトルのほとんどのパブリックメソッドは、同期されたキーワードを追加して、メソッド、つまりベクトルスレッドセーフ、アレイリストスレッドの同期を確保することを保証します。
2。異なる拡張
さまざまな内部プロパティが、異なるスケーリング方法の理由である場合があります。
ArrayListには、データを保存する配列ElementDataと、レコードの数を保存するサイズの2つのプロパティがあります。
Vectorには3つのプロパティがあります。データを保存する配列ElementData、レコードの数を保存するElementCount、および配列サイズを拡張する拡張係数容量インクメントです。
ArrayList拡張法
//jdk1.8.0_91private void grow(int mincapacity){//オーバーフロー - 意識コードint oldcapacity = elementdata.length; int newcapacity = oldcapacity +(oldcapacity >> 1); if(newcapacity -mincapacity <0)newcapacity = mincapacity; if(newcapacity -max_array_size> 0)newcapacity = hugecapacity(mincapacity); // mincapacityは通常サイズに近いため、これはwinです。 }拡張条件が満たされると、拡張配列サイズは元の配列の長さの1.5倍で、パラメーターのパラメーターのパラメーターが大きいことがわかります。
ベクトル拡張法
//jdk1.8.0_91private void grow(int mincapacity){//オーバーフロー - 意識コードint oldcapacity = elementdata.length; int newcapacity = oldcapacity +((caputerincrement> 0)?caputerincrement:oldcapacity); if(newcapacity -mincapacity <0)newcapacity = mincapacity; if(newcapacity -max_array_size> 0)newcapacity = hugecapacity(mincapacity); elementData = arrays.copyof(elementData、newCapacity); }拡張係数が0より大きい場合、新しい配列の長さは元の配列の長さ +膨張係数であり、そうでない場合、サブニューレンの長さは元のアレイの長さの2倍であることがわかります。上記の新しい配列の長さを渡されたパラメーターの長さと比較すると、より大きなパラメーターの長さが最終的な新しい長さです。
読んでくれてありがとう、私はそれがあなたを助けることができることを願っています。このサイトへのご支援ありがとうございます!