import java.util.Objects;
public class Book {
private String title;
private String author;
private int year;
// コンストラクタãªã©ã¯çœç•¥
@Override
public int hashCode() {
return Objects.hash(title, author, year);
}
// equals メソッドもオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ã“ã¨ãŒæŽ¨å¥¨ã•れã¾ã™
// equals ã®å®Ÿè£…㯠hashCode ã®è¨ˆç®—ã«é–¢é€£ã—ã¦ã„ã¾ã™
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Book otherBook = (Book) obj;
return year == otherBook.year &&
Objects.equals(title, otherBook.title) &&
Objects.equals(author, otherBook.author);
}
// ãã®ä»–ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„フィールドã¯çœç•¥
}
ã“ã®ä¾‹ã§ã¯ã€Objects.hash メソッドを使用ã—ã¦ã€titleã€authorã€year フィールドを組ã¿åˆã‚ã›ã¦ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’計算ã—ã¦ã„ã¾ã™ã€‚ã“ã®ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã§ã€hashCode メソッドãŒé©åˆ‡ã«å®Ÿè£…ã•れã€ãƒãƒƒã‚·ãƒ¥ãƒ™ãƒ¼ã‚¹ã®ãƒ‡ãƒ¼ã‚¿æ§‹é€ ã§æ£ã—ã動作ã—ã¾ã™ã€‚ã¾ãŸã€equals メソッドもオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã„ã¾ã™ã€‚equals メソッド㨠hashCode メソッドã¯å¯†æŽ¥ã«é–¢é€£ã—ã¦ãŠã‚Šã€åŒã˜ã‚ªãƒ–ジェクトãŒç‰ã—ã„ã¨åˆ¤å®šã•ã‚Œã‚‹å ´åˆã¯ã€åŒã˜ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’è¿”ã™ã¹ãã§ã™ã€‚
hashCodeメソッド
hashCode メソッドã¯ã€Javaã® Object クラスã§å®šç¾©ã•れã¦ã„るメソッドã®ä¸€ã¤ã§ã‚りã€ã‚ªãƒ–ジェクトã®ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’è¿”ã—ã¾ã™ã€‚ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã¯é€šå¸¸ã€ã‚ªãƒ–ジェクトã®å†…éƒ¨æƒ…å ±ã«åŸºã¥ã„ã¦è¨ˆç®—ã•れã€ç•°ãªã‚‹ã‚ªãƒ–ジェクトã«ç•°ãªã‚‹ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚hashCode メソッドã¯ã€ä¸»ã«ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルãªã©ã®ãƒ‡ãƒ¼ã‚¿æ§‹é€ ã§åˆ©ç”¨ã•れã¾ã™ã€‚
以下ã¯ã€Object クラス㮠hashCode メソッドã®å®£è¨€ã§ã™ã€‚
public int hashCode()
hashCode メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ä¸»ãªç›®çš„ã¯ã€ç•°ãªã‚‹ã‚ªãƒ–ジェクトãŒç•°ãªã‚‹ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’æŒã¤ã‚ˆã†ã«ã—ã€åŒã˜ã‚ªãƒ–ジェクトãŒç‰ã—ã„ã¨åˆ¤å®šã•ã‚Œã‚‹å ´åˆã¯åŒã˜ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’æŒã¤ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒãƒƒã‚·ãƒ¥ãƒ™ãƒ¼ã‚¹ã®ãƒ‡ãƒ¼ã‚¿æ§‹é€ (例: HashMapã€HashSetï¼‰ã§æ£ç¢ºã«å‹•作ã—ã¾ã™ã€‚
hashCode メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹éš›ã®ä¸€èˆ¬çš„ãªåŽŸå‰‡ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚
equalsメソッドã§ç‰ã—ã„ã¨åˆ¤å®šã•れるオブジェクトã¯åŒã˜ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’è¿”ã™ã‚ˆã†ã«ã™ã‚‹ã€‚- ç•°ãªã‚‹ã‚ªãƒ–ジェクトã«ã¯ç•°ãªã‚‹ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’è¿”ã™ã€‚
ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã®è¨ˆç®—ã«ã¯æ§˜ã€…ãªæ–¹æ³•ãŒã‚りã¾ã™ãŒã€ä¸€èˆ¬çš„ã«ã¯ã‚ªãƒ–ジェクト内ã®ãƒ•ィールドを組ã¿åˆã‚ã›ã¦ãƒãƒƒã‚·ãƒ¥å€¤ã‚’生æˆã—ã¾ã™ã€‚Objects.hash メソッドを使用ã™ã‚‹ã¨ã€ç°¡å˜ã«è¤‡æ•°ã®ãƒ•ィールドを組ã¿åˆã‚ã›ãŸãƒãƒƒã‚·ãƒ¥å€¤ã‚’計算ã§ãã¾ã™ã€‚
「014 継承ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント