compare能不能吧把各种类型放一起
来源:5-1 通过Collections实现集合排序
胖胖的工程师
2022-08-30 23:41:20
1回答
好帮手慕小蓝
2022-08-31
同学你好,同学是指在一个集合中,既要使用int等基本类型进行排序,也要使用String等对象类型进行排序吗?
如果是,同学可以参考如下代码和注释:
public class Student { private String name; private int age; public Student(String name, int age) { super(); this.name = name; this.age = age; } public Student() { super(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + "]"; } @Override public int hashCode() { return Objects.hash(age, name); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Student other = (Student) obj; return age == other.age && Objects.equals(name, other.name); } }
public class StudentCompartor implements Comparator<Student> { /* * 为学生信息进行排序: 1.根据姓名进行排序 2.如果名字相同则根据年龄排序 */ @Override public int compare(Student o1, Student o2) { //为了减少方法调用的次数,将学生信息进行转存 String name1 = o1.getName(); String name2 = o2.getName(); int age1 = o1.getAge(); int age2 = o2.getAge(); //获取姓名和年龄的对比 int nameCompare = name1.compareTo(name2); int ageCompare = age1 - age2; //根据比较规则进行返回 if(nameCompare != 0) return nameCompare; return ageCompare; } }
祝学习愉快~
相似问题