import java.util.Objects;
// Student クラス㯠Comparable インターフェースを実装ã—ã¦ã€æ¯”較メソッド compareTo ã‚’æä¾›ã—ã¾ã™ã€‚
public class Student implements Comparable<Student> {
private int id;
private String name;
private double gpa;
// コンストラクタ
public Student(int id, String name, double gpa) {
this.id = id;
this.name = name;
this.gpa = gpa;
}
// ゲッターメソッド
public int getId() {
return id;
}
public String getName() {
return name;
}
public double getGpa() {
return gpa;
}
// compareTo メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã€Student ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ¯”較を実装ã—ã¾ã™ã€‚
@Override
public int compareTo(Student other) {
// id ã§æ¯”較ã™ã‚‹ä¾‹ã€‚ä»–ã®å±žæ€§ã§æ¯”較ã™ã‚‹å ´åˆã¯ãã®å±žæ€§ã‚’利用ã™ã‚‹ã€‚
return Integer.compare(this.id, other.id);
}
// equals メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã€ã‚ªãƒ–ジェクトã®å†…容ã®ä¸€è‡´ã‚’確èªã—ã¾ã™ã€‚
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id &&
Double.compare(student.gpa, gpa) == 0 &&
Objects.equals(name, student.name);
}
// hashCode メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã€ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ã®ç”Ÿæˆã‚’æä¾›ã—ã¾ã™ã€‚
@Override
public int hashCode() {
return Objects.hash(id, name, gpa);
}
// toString メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã€ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ–‡å—列表ç¾ã‚’æä¾›ã—ã¾ã™ã€‚
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", gpa=" + gpa +
'}';
}
}
ã“ã®ä¾‹ã§ã¯ Comparable インターフェイスを実装ã—㦠compareTo メソッドをæä¾›ã—ã€equals メソッドã€hashCode メソッドã€toString メソッドもオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã„ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€Student クラスã¯ä»–ã®ã‚¯ãƒ©ã‚¹ã¨æ¯”較ãŒå®¹æ˜“ã«ãªã‚Šã¾ã™ã€‚
Comparable インターフェイス
Comparable インターフェイスã¯ã€Javaã§æ¯”較å¯èƒ½ãªã‚ªãƒ–ジェクトを表ã™ãŸã‚ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã§ã™ã€‚ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã¯ã€compareTo メソッドをæä¾›ã—ã¦ãŠã‚Šã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’実装ã™ã‚‹ã“ã¨ã§ã€ã‚ªãƒ–ジェクトã®å¤§å°é–¢ä¿‚を定義ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
compareTo メソッドã¯ã€æ¯”較対象ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã¨æ¯”較元ã®ã‚ªãƒ–ジェクトを引数ã¨ã—ã¦å—ã‘å–りã€å¤§å°é–¢ä¿‚ã‚’ç¤ºã™æ•´æ•°ã‚’è¿”ã—ã¾ã™ã€‚具体的ã«ã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ãªãƒ«ãƒ¼ãƒ«ã«å¾“ã„ã¾ã™ã€‚
- æ¯”è¼ƒå…ƒãŒæ¯”較対象よりå°ã•ã„å ´åˆã¯è² ã®æ•´æ•°
- æ¯”è¼ƒå…ƒãŒæ¯”較対象ã¨ç‰ã—ã„å ´åˆã¯ã‚¼ãƒ
- æ¯”è¼ƒå…ƒãŒæ¯”較対象より大ãã„å ´åˆã¯æ£ã®æ•´æ•°
Comparableインターフェイスを実装ã™ã‚‹ã“ã¨ã§ã€Javaコレクションやソートアルゴリズムãªã©ãŒã€ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ¯”較を行ã†éš›ã« compareTo メソッドを利用ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€è‡ªåˆ†ã§å®šç¾©ã—ãŸã‚¯ãƒ©ã‚¹ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚‚ã€æ¨™æº–çš„ãªæ¯”較メソッドをæä¾›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
例ãˆã°ã€Comparable インターフェイスを実装ã—㟠Student クラスã§ã¯ã€compareTo メソッドã«ã‚ˆã‚Šå¦ç”Ÿã®æ¯”較ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€Student オブジェクトをå«ã‚€ãƒªã‚¹ãƒˆã‚’ソートã™ã‚‹ãªã©ãŒå®¹æ˜“ã«è¡Œãˆã¾ã™ã€‚
Comparable インターフェイスã¯ã€Javaã§ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ¯”較をå¯èƒ½ã«ã™ã‚‹é‡è¦ãªä»•組ã¿ã§ã™ã€‚ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを実装ã™ã‚‹ã“ã¨ã§ã€è‡ªåˆ†ã§å®šç¾©ã—ãŸã‚¯ãƒ©ã‚¹ã®ã‚ªãƒ–ジェクトã«å¯¾ã—ã¦ã‚‚ã€æ¨™æº–çš„ãªæ¯”較メソッドをæä¾›ã§ãã¾ã™ã€‚compareTo メソッドを実装ã™ã‚‹ã“ã¨ã§ã€å¤§å°é–¢ä¿‚を定義ã—ã€Javaコレクションやソートアルゴリズムãªã©ãŒã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ¯”較ã«åˆ©ç”¨ã§ãã¾ã™ã€‚
Comparable インターフェイスã®ç†è§£ã¨å®Ÿè£…ã¯ã€ã‚ªãƒ–ジェクト指å‘プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã®ä¸ã§é‡è¦ãªæ¦‚念ã§ã‚りã€Javaã®æ§˜ã€…ãªæ©Ÿèƒ½ã§æ´»ç”¨ã•れã¦ã„ã¾ã™ã€‚ã“れをマスターã™ã‚‹ã“ã¨ã§ã€æŸ”軟ã‹ã¤åŠ¹æžœçš„ãªãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚比較å¯èƒ½ãªã‚ªãƒ–ジェクトをæä¾›ã™ã‚‹ã“ã¨ã§ã€ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã®æ§˜ã€…ãªå´é¢ã§å“質ã¨åŠ¹çŽ‡ã‚’å‘上ã•ã›ã‚‹ã“ã¨ãŒæœŸå¾…ã§ãã¾ã™ã€‚
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント