关于Comparable的实现并重写compareTo改变排序

创建一个Student类实现Comparable接口并重写compareTo方法

	private String nameString;
	private int age;
	private int score;
	
	public Student() {
		super();
	}
	public Student(String nameString, int age, int score) {
		super();
		this.nameString = nameString;
		this.age = age;
		this.score = score;
	}
	public String getNameString() {
		return nameString;
	}
	public void setNameString(String nameString) {
		this.nameString = nameString;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public double getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	@Override
	public int compareTo(Student o) {
		// TODO Auto-generated method stub
	    //按照成绩降序,this-o为升序,o-this为降序
		//return this.score-o.score; //升序
		return o.score-this.score;   //降序
	}
	
	@Override
	public String toString() {
		return "Student [nameString=" + nameString + ",
 age=" + age + ", score=" + score + "]";
	}

}

测试类

public class ArraysDemo {
	public static void main(String[] args) {
	
		Student stu1=new Student("qwe",23,78);
		Student stu2=new Student("asd",22,86);
		Student stu3=new Student("zxc",23,78);
		Student stu4=new Student("rty",21,35);
		Student stu5=new Student("fgh",25,57);
		
		Student[] ss= {stu1,stu2,stu3,stu4,stu5};
		
		
		Arrays.sort(ss);
		
		for(Student student:ss) {
			System.out.println(student.toString()+" ");
		}
	}
}

重写compareTo方法其中返回 this-o升序,o-this是降序

示例使用成绩进行排序

@Override
	public int compareTo(Student o) {
		// TODO Auto-generated method stub
	    //按照成绩降序,this-o为升序,o-this为降序
		//return this.score-o.score; //升序
		return o.score-this.score;   //降序
	}

升序  return this.score-o.score; 结果

Student [nameString=rty, age=21, score=35] 
Student [nameString=fgh, age=25, score=57] 
Student [nameString=qwe, age=23, score=78] 
Student [nameString=zxc, age=23, score=78] 
Student [nameString=asd, age=22, score=86]

降序   return o.score-this.score; 结果

Student [nameString=asd, age=22, score=86] 
Student [nameString=qwe, age=23, score=78] 
Student [nameString=zxc, age=23, score=78] 
Student [nameString=fgh, age=25, score=57] 
Student [nameString=rty, age=21, score=35] 

当成绩相同时可以添加条件来

	@Override
	public int compareTo(Student o) {
		// TODO Auto-generated method stub
		if(o.score==this.score) {
			return this.age-o.age;//年龄升序
		}
		return o.score-this.score;//按照成绩降序,this-o为升序,o-this为降序
	}

结果

Student [nameString=asd, age=22, score=86] 
Student [nameString=zxc, age=22, score=78] 
Student [nameString=qwe, age=23, score=78] 
Student [nameString=fgh, age=25, score=57] 
Student [nameString=rty, age=21, score=35] 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗灵JAVA入侵了你的世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值