Student.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package J20250722;
  2. import java.util.Objects;
  3. /**
  4. * @author WanJl
  5. * @version 1.0
  6. * @title Student
  7. * @description 实体类,这种类主要描述现实中某一个事物的抽象表现形式。
  8. * 实体类类名:要跟现实中事物有所关联,类名要有意义
  9. * 类要有成员属性 一般都是private修饰的
  10. * 有成员属性的getter 和setter方法
  11. * 有无参构造方法和有参构造方法
  12. * 要重写toString()方法
  13. * 要重写equals方法和hashCode方法
  14. *
  15. * @create 2025/7/22
  16. */
  17. public class Student implements Comparable<Student>{
  18. private Integer id;
  19. private String name;
  20. private Integer age;
  21. public Student() {
  22. }
  23. public Student(Integer id, String name, Integer age) {
  24. this.id = id;
  25. this.name = name;
  26. this.age = age;
  27. }
  28. public Integer getId() {
  29. return id;
  30. }
  31. public void setId(Integer id) {
  32. this.id = id;
  33. }
  34. public String getName() {
  35. return name;
  36. }
  37. public void setName(String name) {
  38. this.name = name;
  39. }
  40. public Integer getAge() {
  41. return age;
  42. }
  43. public void setAge(Integer age) {
  44. this.age = age;
  45. }
  46. @Override
  47. public String toString() {
  48. return "Student{" +
  49. "id=" + id +
  50. ", name='" + name + '\'' +
  51. ", age=" + age +
  52. '}';
  53. }
  54. //当重写了equals方法,同时重写hashCode方法。
  55. //重写的效果:如果equals方法比较两个对象返回true,那么这两个对象的hashCode必须相同。
  56. @Override
  57. public boolean equals(Object o) {
  58. if (this == o) return true;
  59. if (o == null || getClass() != o.getClass()) return false;
  60. Student student = (Student) o;
  61. return Objects.equals(id, student.id) && Objects.equals(name, student.name) && Objects.equals(age, student.age);
  62. }
  63. @Override
  64. public int hashCode() {
  65. return Objects.hash(id, name, age);
  66. }
  67. @Override
  68. public int compareTo(Student o) {
  69. //我们可以在里面自己实现比较的规则
  70. //设置按照年龄排序,如果年龄相同,那么就按照姓名排序,姓名是字符串,
  71. //String类已经实现了Comparable接口,并且重写compareTo方法
  72. int r=this.age-o.age;
  73. r=r==0?this.getName().compareTo(o.getName()):r;
  74. return r;
  75. }
  76. }