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){
}
public int compareTo(Object obj){
Student student=(Student)obj;
if(this.number==student.number){
用sort out
return 0;  //如果学号相同,那么两者就是相等的
}else if(this.number&Number()){
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 ();
System.out.Number());
}
//使⽤Collections的sort⽅法对list进⾏排序
System.out.println("-------排序后-------");
Collections.sort(list);
iterator=list.iterator();
while(iterator.hasNext()){
Student ();
System.out.Number());
}
}
}
如上所⽰,可以直接使⽤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;
}
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) {
}
@Override
public String toString() {
return "Student [姓名:" + name +
" 年龄:" + age +
" 分数" + grade + "]";
}
/**
* ⽤Comparable接⼝对下列四位同学的成绩做降序排序,
* 如果成绩⼀样,那在成绩排序的基础上按照年龄由⼩到⼤排序。请正确指定泛型
* @param o
* @return
*/
@Override
public int compareTo(Student o) {
if(Grade() , o.getGrade()) != 0){
if(Grade() , o.getGrade()) > 0){
return 1;
}else {
return -1;
}
}
Age() - 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.String(s1));
System.out.println("==================");
/
/⽤Comparator实现按照姓名排序,请正确指定泛型
Arrays.sort(s1, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
Name()Name());
}
});
System.out.String(s1));
}
}
以上这篇java使⽤compareTo实现⼀个类的对象之间⽐较⼤⼩操作就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。