- コレクションが変更されていないことを確実にするためにどのように?
A:使用Collections.unmodifiableCollection(リスト)読み取り専用のコレクションを作成する方法、このコレクションは、java.lang.UnsupportedOperationExceptionがスローされたものに変更されます。
次のようにサンプルコードは次のとおりです。
public class TestMain {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aa");
System.out.println(list);
Collection<String> collection = Collections.unmodifiableCollection(list);
collection.add("bb");
System.out.println(list);
}
}
実行結果:
出力を参照した後、[AA]、読み取り専用の変更セット、エラーが操作の後に追加されます。
- 原則の実現についてHashSetの話?
A:実際のHashSet HashMapのベースの実装、見HashSetの 1つのコンストラクタ:
ルックのHashSetの追加()メソッド:
あなたは、基礎となるオペレーティングHashSetのを発見することができますが、実際には、間接のHashMapで動作している、HashSetのそれは、重複する要素を許可しないように、 HashMapのキー値を繰り返すことはできませんので。
-
HashMapのテーブルの容量を確認する方法?
A:アレイのテーブルサイズは、このパラメータの容量によって決定され、デフォルト値は16であるが、もちろん、それは上限(2の30日パワー)<< 1〜30であり、建設中に渡されます。 -
何loadFactorこと?
A:主な目的は、アレイは、動的拡張テーブルを必要とするかどうかを確認することである要因であるloadFactorローディング、デフォルト値は0.75です。アレイ16の元の長さは、負荷率が0.75であるような、閾値は16 * 0.75 = 12です。そう回以上12以下アレイの実際の長さは、それが動的拡張であろう。 -
ときHashMapの拡張、どのように時間が容量に変更?
A:HashMapの拡張、コールリサイズ()メソッド、テーブルは二回元の長さになります。 -
HashMapの展開は、問題が何をもたらすのだろうか?
A:拡張は、パフォーマンスの低下につながるような状況の下でのデータの多くは、場所の高い性能要件は、この損失は非常に致命的な可能性がある場合。 -
HashMapのアレイの拡張プロセス?
A:二回、元のアレイの容量を持つ新しい配列を作成します。焼き直し操作後、元のトラバーサル・エントリ・アレイ、新しいアレイへのすべての再ハッシュエントリは、アレイ内の新しいノードの位置は、他の次元として指定され、元の目標位置Aに、2つのだけの場所であってもよいです[ +配列のサイズの元の位置インデックス] -
HashMapのそれの再調整サイズと間違っては何ですか?
A:複数のスレッド、それはデッドロックが生成されます、競争の条件があるかもしれません。 -
なぜ、HashMapのデッドロック複数のスレッドのサイズを調整することができますか?
A:2件のスレッドが発見された場合のHashMapの必要性はサイズを変更するには、彼らはまた、サイズを調整しようとしますので。新しい場所に移動するバケットは、HashMapのLinkedListのである、尾部に要素をとることが、頭の上にない場合ので、リサイズ処理では、要素の順序は、順にLinkedListの中に格納されていますテール(尾の横断)を横断避けるために。競争の条件が発生したのであれば、死のサイクルが存在します。 -
HashMapのいくつかの例には、プロパティエントリが含まれていますか?
A:次のポインタキー、値、のために一方向ハッシュ値を指すようにリンクされたリストの次の要素。