å•題
次ã«ã€ä»¥ä¸‹ã® Library クラスãŒã‚りã¾ã™ã€‚ã“ã®ã‚¯ãƒ©ã‚¹ã¯è¤‡æ•°ã®æ›¸ç±ã‚’管ç†ã—ã¾ã™ã€‚Library クラスã«ã¯é‡è¤‡ã™ã‚‹æ›¸ç±ã‚’管ç†ã—ãªã„よã†ã«ã™ã‚‹ãŸã‚ã«å¿…è¦ãª Set を使用ã—ã¦ã„ã¾ã™ã€‚ã—ã‹ã—ã€Book クラス㮠equals メソッド㨠hashCode ãƒ¡ã‚½ãƒƒãƒ‰ãŒæ£ã—ã実装ã•れã¦ã„ãªã„å ´åˆã€Set ãŒæ£ã—ãæ©Ÿèƒ½ã—ãªã„å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚Library ã‚¯ãƒ©ã‚¹ãŒæ£ã—ã動作ã™ã‚‹ã‚ˆã†ã«ã€Book クラス㮠equals メソッド㨠hashCode メソッドを修æ£ã—ã¦ãã ã•ã„。
import java.util.HashSet;
import java.util.Set;
public class Library {
private Set<Book> books;
public Library() {
this.books = new HashSet<>();
}
public void addBook(Book book) {
books.add(book);
}
public boolean containsBook(Book book) {
return books.contains(book);
}
// ãã®ä»–ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„コードã¯çœç•¥
}
ヒント
- hashCodeメソッドã®å®Ÿè£…:
hashCodeメソッドã¯ã€ã‚ªãƒ–ジェクトã®ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’生æˆã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•れã¾ã™ã€‚オブジェクトãŒç‰ã—ã„å ´åˆã€hashCodeメソッドãŒåŒã˜å€¤ã‚’è¿”ã™ã‚ˆã†ã«å®Ÿè£…ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ - getClassメソッドã®åˆ©ç”¨:
getClassメソッドを使用ã—ã¦ã€ã‚ªãƒ–ジェクトã®å®Ÿéš›ã®ã‚¯ãƒ©ã‚¹ã‚’å–å¾—ã§ãã¾ã™ã€‚ã“れを利用ã—ã¦ã€ç•°ãªã‚‹åž‹ã®ã‚ªãƒ–ジェクトã«å¯¾ã—ã¦ã‚¯ãƒ©ã‚¹ã«åŸºã¥ã„ãŸãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’生æˆã§ãã¾ã™ã€‚ - hashCodeã®è¨ˆç®—方法: ç•°ãªã‚‹åž‹ã®ã‚ªãƒ–ジェクトã«å¯¾ã—ã¦ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’生æˆã™ã‚‹å ´åˆã€å„åž‹ã”ã¨ã«ç‹¬è‡ªã®è¨ˆç®—方法を考ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ç•°ãªã‚‹åž‹ãŒåŒã˜ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’æŒãŸãªã„よã†ã«ã™ã‚‹å·¥å¤«ãŒå¿…è¦ã§ã™ã€‚
- ä¸€è²«æ€§ã¨æ€§èƒ½ã®ãƒãƒ©ãƒ³ã‚¹:
hashCodeメソッドã®å®Ÿè£…ã«ãŠã„ã¦ã¯ã€ä¸€è²«æ€§ã¨æ€§èƒ½ã®ãƒãƒ©ãƒ³ã‚¹ãŒé‡è¦ã§ã™ã€‚åŒã˜ã‚ªãƒ–ジェクトã«å¯¾ã—ã¦ã¯å¸¸ã«åŒã˜ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’è¿”ã™ã“ã¨ãŒæœŸå¾…ã•れã¾ã™ãŒã€ãƒ‘フォーマンスも考慮ã—ã¦é«˜é€Ÿã«è¨ˆç®—ã§ãる実装を心掛ã‘ã¾ã™ã€‚
ã“れらã®ãƒ’ントをå‚考ã«ã—ã¦ã€ç•°ãªã‚‹åž‹ã®ã‚ªãƒ–ジェクトã«å¯¾ã—ã¦æ£ç¢ºãªãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã‚’生æˆã™ã‚‹å®Ÿè£…を考ãˆã¦ã¿ã¦ãã ã•ã„。
→解ç”例
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント