您的位置:首页 > 编程语言 > Java开发

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

2018-10-22 18:14 489 查看

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

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

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

[code]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]);
}
}
}

控制台打印如下:

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐