数组排序与自定义对象排序——比较器

int数组的排序

Arrays.sort()

package com.gkd.qdsx.day13;

import java.util.Arrays;

public class ArraySortDemo {


	public static void main(String[] args) {
		int s1 [] = {18,23,22,68,57,46,15};
		System.out.println("----排序前----");
		for (int s:s1) {
			System.out.print(" "+s);
		}
		System.out.println();
		System.out.println("----排序后----");
		Arrays.sort(s1);
		for (int s:s1) {
			System.out.print(" "+s);
		}
	}

}

运行结果图
在这里插入图片描述

对象比较器

Comparable接口
定义一个学生类

package com.gkd.qdsx.day13;

public class Student implements Comparable<Student>{
	private int number;
	private String name;
	private int age;
	private double grede;
	public Student(int number, String name, int age, double grede) {
		super();
		this.number = number;
		this.name = name;
		this.age = age;
		this.grede = grede;
	}
	public Student() {
		super();
	}
	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 int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public double getGrede() {
		return grede;
	}
	public void setGrede(double grede) {
		this.grede = grede;
	}
	@Override
	public String toString() {
		return "学号:" + number + "  姓名:" + name + "  年龄:" + age + ", 成绩:" + grede;
	}
	@Override
	public int compareTo(Student o) {
		if (o==null) {
			return -1;
		}if (this.number<o.number) {
			return -1;
		}else if (this.number>o.number) {
			return 1;
		}
		return 0;
	}
	

}

Tast:

package com.gkd.qdsx.day13;

import java.util.Arrays;

public class ArraySortDemo {

	public static void main(String[] args) {
		Student[] students = new Student[6];
		students[0] = new Student(1801,"张三", 18, 88); 
		students[1] = new Student(1803,"李四", 78, 68); 
		students[2] = new Student(1810,"王五", 32, 67);
		students[3] = new Student(1820,"赵丽", 45, 85);
		students[4] = new Student(1812,"田七", 23, 75);
		students[5] = new Student(1806,"宋八", 66, 71);
		for (Student s:students) {
			System.out.println(s.toString());	
		}
		System.out.println("-----------------------");
		Arrays.sort(students, new ComparatorDemo());
//		Arrays.sort(students);
		for (Student s:students) {
			System.out.println(s.toString());	
		}
	}

}

Comparator接口
优点不用修改源代码

package com.gkd.qdsx.day13;

import java.util.Comparator;

public class ComparatorDemo implements Comparator<Student>{

	@Override
	public int compare(Student o1, Student o2) {
		if(o1.getGrede() < o2.getGrede()){
			return -1;
		}else if(o1.getGrede() > o2.getGrede()){
			return 1;
		}
		return 0;
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值