2012-05-04 5 views
1

equals()とhashCode()のオーバーライドに関するいくつかの答えは、両方を必要とし、JavaのHashMapのキーとしてそれらを使用するアプリケーションを示しています。私の質問は、Java KeyStrokeクラスはHashMapのキーとして置くのが安全ですか?さらに、私は迷惑ではなく、これらの質問を続けています。提供されたクラス(私はKeyStrokeがSwingによって提供されていると思います)がこのコンテキストで使用するのが安全かどうかをどのようにして知るでしょう。 equals()とhashCode()をオーバーライドしますか?HashMapのキーとしてのKeyStrokeクラス

ありがとうございます!

答えて

3

equalshashCodeがオーバーライドされるかどうかは、APIを参照してください。 hashCodeおよびequalsは、KeyStrokeでは無効になりませんが、AWTKeyStrokeにあります。実際には、AWTKeyStroke#hashCodeは、

[このオブジェクトは]ハッシュテーブルのインデックス値として適しています。

+0

実際。 @ジャグワイヤー:これは正解です。 1 + –

+0

@ジェフリー:多くのありがとう!私はKeyStroke javadocを乗り越え、AWTKeyStroke拡張を完全に欠いていました。再度、感謝します... – JagWire

2

ベストをHashMapのキーオーバーライドが等しいとhashCodeと不変あり、そしてあなたがAPIをチェックすると、キーストロークがある場合。だからそれはうまくいくはずです。

関連する問題