[解決済み] ConcurrentHashMapに対するConcurrentHashSetが存在しない理由
質問
HashSetはHashMapをベースにしています。
を見ると
HashSet<E>
の実装では、すべてが
HashMap<E,Object>
.
<E>
のキーとして使用されます。
HashMap
.
そして、私たちは次のことを知っています。
HashMap
はスレッドセーフではありません。そのため
ConcurrentHashMap
をJavaで作成しました。
これを踏まえて、私は以下のように混乱しています。
に基づいているはずのConcurrentHashSetがないのはなぜでしょうか?
ConcurrentHashMap
?
他に何か足りないものはありますか?私は
Set
をマルチスレッド環境で使用することができます。
また、もし私が独自の
ConcurrentHashSet
を置き換えるだけで、実現できるのでしょうか?
HashMap
から
ConcurrentHashMap
で、残りはそのまま?
どのように解決するのですか?
には組み込みの型がありません。
ConcurrentHashSet
なぜなら、常に
導出
をマップから取得します。マップには多くの種類があるので、与えられたマップ(またはマップクラス)からセットを生成するためのメソッドを使用します。
Java 8 より前のバージョンでは、同時実行ハッシュ・マップにバックされた同時実行ハッシュ・セットを生成するために
Collections.newSetFromMap(map)
Java 8 では (@Matt の指摘により) 並列ハッシュセットを取得することができます。
ビュー
を経由して
ConcurrentHashMap.newKeySet()
. これは、以前の
newSetFromMap
これは、空のマップオブジェクトを渡す必要がありました。しかし、これは
ConcurrentHashMap
.
いずれにせよ、Javaの設計者は、新しいマップ・インターフェースが作られるたびに新しいセット・インターフェースを作ることもできましたが、そのパターンでは、サードパーティが独自のマップを作ったときに、強制力を持たせることができません。それよりも、新しいセットを派生させる静的メソッドを用意したほうがいい。そのやり方なら、自分でマップの実装を作ったときでも、常にうまくいく。
関連
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] B "の印刷が "#"の印刷より劇的に遅いのはなぜですか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] ConcurrentHashMapとCollections.synchronizedMap(Map)の違いは何ですか?
-
[解決済み] なぜJavaにはSortedListがないのですか?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
エラー java.util.NoSuchElementException
-
Java Exceptionが発生しました エラー解決
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
javaでよく使われる英単語
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
JSPで「リストが型解決できない!」の解決方法
-
IDEA パッケージステートメントの欠落