java使用compareTo实现一个类的对象之间比较大小操作
首先定义一个对象,注意这个对象必须实现Comparable接口,并重写这个接口的compareTo方法
package cn.demo; public class Student implements Comparable{ private int number=0; //学号 private String name=""; //学生姓名 private String gender=""; //性别 public int getNumber(){ return number; } public void setNumber(int number){ this.number=number; } public String getName(){ return name; } public void setName(String name){ this.name=name; } public String getGender(){ return gender; } public void setGender(String gender){ this.gender=gender; } public int compareTo(Object obj){ Student student=(Student)obj; if(this.number==student.number){ return 0; //如果学号相同,那么两者就是相等的 }else if(this.number>student.getNumber()){ return 1; //如果这个学生的学号大于传入学生的学号 }else{ return -1; //如果这个学生的学号小于传入学生的学号 } } }
在上面的重写方法中标红的地方,如果是小于号,则是按照降序排列,但是在我贴上去的代码,则是按升序排列
接下来就是测试类了:
package cn.demo; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; public class Test { public static void main(String[] args) { Student student1=new Student(); student1.setNumber(5); Student student2=new Student(); student2.setNumber(2); Student student3=new Student(); student3.setNumber(1); Student student4=new Student(); student4.setNumber(4); ArrayList<Student> list=new ArrayList<Student>(); list.add(student1); list.add(student2); list.add(student3); list.add(student4); System.out.println("-------排序前-------"); Iterator<Student> iterator=list.iterator(); while(iterator.hasNext()){ Student stu=iterator.next(); System.out.println(stu.getNumber()); } //使用Collections的sort方法对list进行排序 System.out.println("-------排序后-------"); Collections.sort(list); iterator=list.iterator(); while(iterator.hasNext()){ Student stu=iterator.next(); System.out.println(stu.getNumber()); } } }
如上所示,可以直接使用collections的sort方法进行排序
-------排序前------- 5 2 1 4 -------排序后------- 5 4 2 1
补充知识:【JAVA】用Comparable接口学生的成绩做降序排序!请正确指定泛型;用Comparator实现按照姓名排序,请正确指定泛型!
创建四个学生信息,分别包含姓名(String) , 年龄(int) ,分数(double)
(1)用Comparable接口对下列四位同学的成绩做降序排序, 如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序,请正确指定泛型;
(2)用Comparator实现按照姓名排序,请正确指定泛型。
//定义学生类,并实现Comparable接口<定义Student类型> public class Student implements Comparable<Student>{ private String name; private int age; private double grade; public Student() { } public Student(String name, int age, double grade) { this.name = name; this.age = age; this.grade = grade; } 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; } public double getGrade() { return grade; } public void setGrade(double grade) { this.grade = grade; } @Override public String toString() { return "Student [姓名 :" + name + " 年龄 :" + age + " 分数" + grade + "]"; } /** * 用Comparable接口对下列四位同学的成绩做降序排序, * 如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序。请正确指定泛型 * @param o * @return */ @Override public int compareTo(Student o) { if(Double.compare(this.getGrade() , o.getGrade()) != 0){ if(Double.compare(this.getGrade() , o.getGrade()) > 0){ return 1; }else { return -1; } } return this.getAge() - o.getAge(); } }
*定义Student类,声明基本的属性,方法及完成对Comparable接口的实现,实现“对成绩实现降序,如果成绩一样,在成绩排序的基础上按照年龄由大到小的排序”的结果。
public class Task { public static void main(String[] args) { //定义四个学生对象 Student[] s1 = new Student[4]; s1[0] = new Student("liusan" , 20 , 90.0); s1[1] = new Student("lisi" , 22 , 90.0); s1[2] = new Student("wangwu" , 20 , 99.0); s1[3] = new Student("sunliu" , 22 , 100.0); Arrays.sort(s1); System.out.println(Arrays.toString(s1)); System.out.println("=================="); //用Comparator实现按照姓名排序,请正确指定泛型 Arrays.sort(s1, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { return o1.getName().compareTo(o2.getName()); } }); System.out.println(Arrays.toString(s1)); } }
以上这篇java使用compareTo实现一个类的对象之间比较大小操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
- Java中compareTo方法使用小结
- Java中BigDecimal的equals方法和compareTo方法的区别详析
- Java中BigDecimal比较大小的3种方法(compareTo()、equals()和compareTo())
- Java compareTo用法详解
- JavaSE中compare、compareTo的区别
- Java 基础:string中的compareTo方法
- java compare compareTo方法区别详解
- java compareTo和compare方法比较详解
- Java中替代equals,compareTo和toString的方法
- Java中比较运算符compareTo()、equals()与==的区别及应用总结
- 详解java中保持compareTo和equals同步
- JAVA中compareTo方法的使用小结
相关文章
SpringCloud2020.0.x版UnderTow AccessLog相关配置简介
本文详细介绍了SpringCloud中AccessLog的相关配置,我们可以根据文中的相关数据配置出所需的AccessLog的信息以及格式,感兴趣的小伙伴可以参考一下2021-08-08使用Postman传递arraylist数据给springboot方式
这篇文章主要介绍了使用Postman传递arraylist数据给springboot方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-12-12
最新评论