JavaのHashSetを繰り返す必要があるのはなぜですか?

Javaでは、HashMapクラスがMapインターフェースを実装し、HashSetクラスがSetインターフェースを実装していることを私は理解しています。

私はまた、これら両方のクラスがハッシュテーブルの実装であることを理解しています。

それは、HashMapがget()メソッドを持っているのに、なぜHashSetを反復処理する必要があるのでしょうか。ハッシュテーブルがそれに関連付けられた値を通して要素を取得することができるという意味ではありませんか?

私はドキュメントを調べて検索をしましたが答えが見つかりませんでした。

前もって感謝します。

0
nl ru de
Setget()メソッドのポイントは何ですか?それができる唯一の意味あることは、渡されたオブジェクトがセット内にあるかどうかを言うことです。
追加された 著者 ohlec,

4 答え

set.contains(x)<�の場合、 HashSet (または Set の実装)の get()メソッドは冗長になります。/code>は true を返します。 Set の対応する要素と等しいと見なされるインスタンスへの参照( x )は既にあります。

Map インターフェースでは、キーに関連付けられた値を取得するために map.get(key)が必要です。 Set インターフェースにはキーしかなく、(意味のある)値は関連付けられていません。

これらのクラスはどちらもハッシュテーブルの実装であることも理解しています。

そのステートメントによって HashSet が補助的な HashMap インスタンスで実装されていることを意味しているのなら、それは単なる実装の詳細です。このバッキング HashMap のキーに対応する値はすべて同じダミーオブジェクトへの参照です。バッキング HashMap に対して get()を呼び出す理由はありません。

2
追加された

set.contains(x)<�の場合、 HashSet (または Set の実装)の get()メソッドは冗長になります。/code>は true を返します。 Set の対応する要素と等しいと見なされるインスタンスへの参照( x )は既にあります。

Map インターフェースでは、キーに関連付けられた値を取得するために map.get(key)が必要です。 Set インターフェースにはキーしかなく、(意味のある)値は関連付けられていません。

これらのクラスはどちらもハッシュテーブルの実装であることも理解しています。

そのステートメントによって HashSet が補助的な HashMap インスタンスで実装されていることを意味しているのなら、それは単なる実装の詳細です。このバッキング HashMap のキーに対応する値はすべて同じダミーオブジェクトへの参照です。バッキング HashMap に対して get()を呼び出す理由はありません。

2
追加された

これらのクラスは両方ともaの実装です   ハッシュテーブル。

私はあなたがその実装についてあまりにも多くを想定していることに対して罪があると思います。すべてのオブジェクトと同様に、重要なのはデザイナーがあなたに公開するために選択したパブリックインターフェースです。

Set インターフェースには、個々のオブジェクトに直接アクセスするためのgetメソッドは含まれていません。設計上の意味は、 Map とは異なります。

1
追加された

これらのクラスは両方ともaの実装です   ハッシュテーブル。

私はあなたがその実装についてあまりにも多くを想定していることに対して罪があると思います。すべてのオブジェクトと同様に、重要なのはデザイナーがあなたに公開するために選択したパブリックインターフェースです。

Set インターフェースには、個々のオブジェクトに直接アクセスするためのgetメソッドは含まれていません。設計上の意味は、 Map とは異なります。

1
追加された