RIAトピックス
リッチクライアント/RIAを主テーマに取り扱います。Flex、Ajax、AIR、Silverlight、JavaFX、etc。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

equals()実装時に必要なhashCode() について
Javaでequalsメソッドを実装する際にはhashCode()も同時にオーバーライドしなければなりません。
hashCode()とequals()の関係性は知っていましたが、hashCode()がどのような意味を持っていてどうして実装する必要があるのかよくわかりませんでした。

今回equals()を実装する事になったのでこれではいけないという事で調べてみました。

まず、hashCode()で返す値は以下の条件を満たす必要があります。
1.equalsで等しいと判定されたオブジェクトは等しいハッシュ値を持つ
2.equalsで等価性の判定に用いられたフィールドに変更がない限り常に同じハッシュ値を持つ

で、hashCode()の意味ですがこれはequals()の速度向上のためなどのindexの役目をするらしいです。
だから、hashCode()が等しくてもequals()がtrueを返す必要はないという訳ですね。
調べてもこの事が調べても意外と出てこなかったので記事にしてみました。

equals(), hashCode() の実装 【cleverwareの日記より】
http://d.hatena.ne.jp/cleverware/20090408/1239193207

java規約について【質問&回答 (Q&A) コミュニティ - 教えて!gooより】
http://oshiete1.goo.ne.jp/qa675605.html

K.Y
スポンサーサイト

テーマ:Webサービス - ジャンル:コンピュータ

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2005 RIAトピックス all rights reserved.
Powered by FC2ブログ.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。