インタビューのJavaコレクションフレームワークの論文で勝つには、(3)---この記事は、パブリックJavaコンサート号で掲載、丘のブログからです

21、ArrayListのとベクトルとの差分

       両方のクラスは、(Listインタフェースは、Collectionインタフェースを拡張)、それらは、すなわち、コレクションに格納されているこれら二つの要素の位置が順序付けられ、ダイナミックアレイの等価のセットを順序付けされ、Listインタフェースを実装します我々は、後で要素インデックスの位置によって取り出すことができ、データを繰り返すように許容される、最大セットHashSetの異なる等である、などがその要素を取得するためにHashSetのインデックス番号を設定することができません、また、重複した要素を許可していません。

       ArrayListのベクトルとの間の主な違いは、二つの側面を含みます。

       同期:

       ベクターは、それがスレッドの同期の間にある方法であり、ArrayListのラインはその中の方法は、スレッド同期ある危険な手順であり、スレッドセーフです。1つのスレッドだけのコレクションにアクセスできる場合、それは、スレッドの安全性を考慮していないので、効率が高くなり、ArrayListのを使用するのが最適です。複数のスレッドがコレクションへのアクセスがある場合、それは我々が所有する必要がないので、ベクトルを使用するのが最適ですそして再び、スレッドセーフなコードを書くことを検討してください。

       データの増加:

       ベクターArrayListの要素数、その内部に記憶容量を超えた場合、貯蔵空間のArrayListとベクトルを大きくする必要があり、初期容量の大きさを有しているが、ストレージ・スペースを増加させるたびに、1つのメモリセルのみの増加がありませんしかし、メモリセルの増加複数、ある種のバランスを達成するためのメモリ空間と手順の利用効率との間のメモリセルの数がそれぞれ増加しました。ArrayListの成長戦略が明確に定義されていない間のベクトル二回、元のデフォルトの成長は、文書中の(オリジナルの1.5倍の増加からソースコードを参照してください)。ArrayListのとベクトルは、スペースの初期サイズを設定することができます設定は、成長のArrayListのメソッドのための部屋を提供していませんが、あなたはまた、ベクトル空間の成長を設定することができます。

      概要:二回、元ベクトルで成長、0.5倍のArrayListの増加。

22、ハッシュマップとのハッシュテーブルとの間の差

        HashtableのHashMapのは、軽量な実装(非スレッドセーフな実装)である、彼らはMapインタフェースを完了している、主な違いは、HashMapのはアクセスだけ一つのスレッドで、起因する非スレッドセーフに、ヌル(null)のキー(鍵)を可能とすることです、効率はハッシュテーブルよりも高くなります。

        HashMapのは、キー入力または値としてnullを許容し、Hashtableの許可されていません。

        HashMapのは、複数のスレッドがHashtableのアクセス時に、その実施のための方法を同期する必要はありません、とHashMapのは、それらを提供するために同期させなければならない、ではないながら、Hashtableの方法は、同期です。

23、リストとマップの違いは?

       これは、データ・セット・ストレージ・キーの別個のセットに格納され、もう一方は複列値そのようなデータは、リストに格納されたデータが配列され、繰り返し可能に、地図データが順に格納されていない、キーがされていません繰り返し、その値が重複することができます。

 

おすすめ

転載: www.cnblogs.com/pwl-hhf/p/11774700.html