package J20250722; import java.util.Objects; /** * @author WanJl * @version 1.0 * @title Student * @description 实体类,这种类主要描述现实中某一个事物的抽象表现形式。 * 实体类类名:要跟现实中事物有所关联,类名要有意义 * 类要有成员属性 一般都是private修饰的 * 有成员属性的getter 和setter方法 * 有无参构造方法和有参构造方法 * 要重写toString()方法 * 要重写equals方法和hashCode方法 * * @create 2025/7/22 */ public class Student implements Comparable{ private Integer id; private String name; private Integer age; public Student() { } public Student(Integer id, String name, Integer age) { this.id = id; this.name = name; this.age = age; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } //当重写了equals方法,同时重写hashCode方法。 //重写的效果:如果equals方法比较两个对象返回true,那么这两个对象的hashCode必须相同。 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return Objects.equals(id, student.id) && Objects.equals(name, student.name) && Objects.equals(age, student.age); } @Override public int hashCode() { return Objects.hash(id, name, age); } @Override public int compareTo(Student o) { //我们可以在里面自己实现比较的规则 //设置按照年龄排序,如果年龄相同,那么就按照姓名排序,姓名是字符串, //String类已经实现了Comparable接口,并且重写compareTo方法 int r=this.age-o.age; r=r==0?this.getName().compareTo(o.getName()):r; return r; } }