HashSet クラスは Java Collections Framework の一部であり、要素の重複を許可しない高速で順序付けされていないコレクションを提供します。これは HashMap の上に構築されており、同じ時間計算量の利点を継承していますが、要素の一意性にのみ焦点を当てています。この記事では、HashSet の仕組み、HashSet のユニークな点、他のコレクションとの違いについて説明します。
ハッシュセットは次のとおりです:
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); // Parameterized constructor using a collection Set setWithCollection = new HashSet(Arrays.asList(4, 4, 3)); // Default constructor with default capacity 16 Set set = new HashSet();
set.add(1); set.add(2); set.add(1); // Duplicate value is ignored System.out.println(set); // Output -> [1, 2]
重複した値を無視するのではなく置換する必要がある場合、HashSet は正しい選択ではありません。これは、要素の一意性を優先するためです。
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); System.out.println(setWithInitialCapacity.size()); // Output -> 0
setWithInitialCapacity の容量が 5 であっても、size は 0 です。サイズは初期容量ではなく、セット内に存在する 要素の数を反映するためです。容量は、要素が追加されると調整される内部ストレージ容量と考えることができます。
// Parameterized constructor using a collection SetsetWithCollection = new HashSet(Arrays.asList(4, 4, 3)); System.out.println(setWithCollection); // Output -> [3, 4] or [4, 3]
昇順で配置されるようにする TreeSet の使用を検討してください。
インデックス を取得できるかどうかです。答えは、いいえです。HashSet は、リストや配列のようなインデックスベースの構造ではなく、ハッシュ メカニズムを使用して要素を格納するためです。
キー を使用して要素を保存しますが、値は無関係です。これが、HashMap のキーと同様に、HashSet 内のすべての要素が一意である必要がある理由です。
O(1) の時間計算量を提供しますが、並べ替えやインデックス作成などの機能がありません。開発者にとって、HashSet と HashMap の関係を知ることは、HashSet の内部動作を理解し、コレクション フレームワークをより有効に活用するのに役立ちます。
次の投稿では、候補者のコレクションの概念に関する知識をテストするために、面接でよく聞かれるよくある面接の質問を見ていきます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3