Today: Yesterday: Total: Online:
カテゴリー
その他
  • RSS1.0
  • RSS2.0
  • atom0.3
  • valid XHTML1.0
  • valid CSS2
  • Credit
RSSリーダーで購読する | この日記のはてなブックマーク数 | プロフィール
コメントが一番多い記事(233コメント):人の心理の裏をかくホームページ集客術:リピータになってもらうためには
ツイートが一番多い記事(94ツイート):ちょっと待て!twitterやfacebookに子供の写真を掲載する親達への警告
いいねが一番多い記事(574いいね):facebookスパムに要注意。なりすましの見分け方とアカウント乗っ取りの手口(2013年度版)

カテゴリー » JAVA February 03, 2011

equalsとhashcode ID:1296715470


equals(Object)メソッドを用いる場合は、それがオーバライドされているかどうかを確認する必要がある。
オーバライドされていたら、equalsはそのまま使える。


・equals(Object)メソッドをオーバライドしているクラス

Boolean、Byte、Character、Double、Float、Integer、Long、Short、String

・equals(Object)メソッドをオーバライドしていないクラス

Class、Process、Runtime、StringBuffer、Thread、ThreadGroup


例)
StringBufferで比較したら、値が違った


String test1 = "aaa";
String test2 = "aaa";

StringBuffer test3 = new StringBuffer("aaa");
StringBuffer test4 = new StringBuffer("aaa");

if(test1.equals(test2)){
System.out.println("string:等しい");
}
else{
System.out.println("string:等しくない");
}

if(test3.equals(test4)){
System.out.println("stringBuf:等しい");
}
else{
System.out.println("stringBuf:等しくない");
}

実行結果
string:等しい
stringBuf:等しくない


StringBufferはオーバーライドしていないので、比較が違ってきてしまった。


比較するには、
「equals(Object)メソッドをオーバライドする」
「同時にhashCodeメソッドをオーバライドして、「等価なオブジェクトは等価なハッシュコードを保持する必要がある」


http://www.atmarkit.co.jp/fjava/javatips/174java059.html
— posted by midilin @ 03:44PM
[コメントが多かった順の記事]
人の心理の裏をかくホームページ集客術:リピータになってもらうためには(233)
ホームページ心理学第2弾「メールの書きだしとホームページ運営・集客の関係」(76)
娘が生まれた(69)
ゲームと言えば、何を思い出す? (50)
Microsoftからアクセス (30)
「目標の立て方」と「努力」と「実行力」(26)