关于比较器,我们知道我们java数组中可以使用一个方法:Array.sort(array);来进行排序

关于比较器,我们知道我们java数组中可以使用一个方法:Array.sort(array);来进行排序,如果我们数组中是放的基本数据类型,就可以直接比较大小排序,如果我们放的是对象的话,这样排序就意义不大,需要我们自己进行相应的修改,得到我们想要的比较结果。

比如我们有三个学生,学生属性有id,name,age,我们可以使用id来排序,也可以使用age来排序。两者结果是不一样的。下边我们来实现这个功能

下边会涉及到comparator接口(不懂的同学可以去查询一下comparable和comparator的区别):

package 比较器;

import java.util.Arrays;
import java.util.Comparator;

public class ComparatorTest {
	public static class Student {
		private int id;
		private String name;
		private int age;

		public Student(int id, String name, int age) {
			this.id = id;
			this.name = name;
			this.age = age;
		}

		@Override
		public String toString() {
			return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
		}
		
	}
//这里是比较器1,是利用id来进行比较
	public static class IdComparator implements Comparator<Student> {

		@Override
		public int compare(Student o1, Student o2) {
			// TODO Auto-generated method stub
			return o1.id - o2.id;
		}

	}
//这里是比较器2,是利用age来进行比较
	public static class AgeComparator implements Comparator<Student> {

		@Override
		public int compare(Student o1, Student o2) {
			// TODO Auto-generated method stub
			return o1.age - o2.age;
		}

	}

	public static void main(String[] args) {
		Student s1 = new Student(1, "小红", 12);
		Student s2 = new Student(3, "小张", 10);
		Student s3 = new Student(2, "小王", 8);
		Student[] sArray =  { s1, s2, s3 };
		Arrays.sort(sArray,new IdComparator());
		for(int i=0;i<sArray.length;i++){
			System.out.println(sArray[i]);
		}
		System.out.println("----------------------------");
		Arrays.sort(sArray,new AgeComparator());
		for(int i=0;i<sArray.length;i++){
			System.out.println(sArray[i]);
		}
	}
}

控制台打印如下:

猜你喜欢

转载自blog.csdn.net/Handsome2013/article/details/83276592