[解決済み] HashSetとLinkedHashSetの比較
2022-04-24 22:52:16
質問
両者の違いは何ですか?知っているのは
LinkedHashSet は、HashSet の順序付きバージョンです。 は、すべての要素で二重にリンクされたリストを維持します。HashSet の代わりにこのクラスを使用します。 は、反復処理の順序を気にする場合です。HashSet を繰り返し処理するとき 一方、LinkedHashSet を使用することで、その要素を反復処理することができます。 を挿入された順に表示します。
しかし、LinkedHashSetのソースコードでは、HashSetのコンストラクタを呼び出しているだけです。では、2重リンクされたリストと挿入順序はどこにあるのでしょうか?
解決方法は?
その答えは
どのコンストラクタ
その
LinkedHashSet
は基底クラスを構築するために使用します。
public LinkedHashSet(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor, true); // <-- boolean dummy argument
}
...
public LinkedHashSet(int initialCapacity) {
super(initialCapacity, .75f, true); // <-- boolean dummy argument
}
...
public LinkedHashSet() {
super(16, .75f, true); // <-- boolean dummy argument
}
...
public LinkedHashSet(Collection<? extends E> c) {
super(Math.max(2*c.size(), 11), .75f, true); // <-- boolean dummy argument
addAll(c);
}
また、(一例ですが
HashSet
は、boolean引数をとるコンストラクタを記述しており、以下のようになります。
/**
* Constructs a new, empty linked hash set. (This package private
* constructor is only used by LinkedHashSet.) The backing
* HashMap instance is a LinkedHashMap with the specified initial
* capacity and the specified load factor.
*
* @param initialCapacity the initial capacity of the hash map
* @param loadFactor the load factor of the hash map
* @param dummy ignored (distinguishes this
* constructor from other int, float constructor.)
* @throws IllegalArgumentException if the initial capacity is less
* than zero, or if the load factor is nonpositive
*/
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<E,Object>(initialCapacity, loadFactor);
}
関連
-
スタイルが読み込まれず、ブラウザのコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
springboot project MIMEタイプ text/htmlで転送された静的ファイルを読み込む。
-
IllegalArgumentException この例外を解決する方法
-
サーブレットクラスのインスタンス化エラーの解決法
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
SocketTimeoutExceptionの解決方法です。読み込みがタイムアウトした
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
Maven Pluginの実行がライフサイクル設定の対象外であるエラーの解決
-
[解決済み] HashSetの値を構造的に初期化する方法は?
-
[解決済み】ハッシュセットとツリーセットの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
Spring Boot による HTTPS アクセスの設定
-
JDKの設定時にjava.dllが見つからない、java SE Runtime Environmentが見つからない問題が発生しました。
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
SocketTimeoutExceptionの解決方法です。読み込みがタイムアウトした
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について
-
[解決済み] Javaで正しいマイクロベンチマークを書くには?