JAVA中关于对象数组是否可以实现Comparable接口和排序问题

来源:互联网 发布:gsm网络的sim卡是什么 编辑:程序博客网 时间:2024/06/05 01:48

1.学完一位以及二维数组之后,大家都会把数组的数据类型局限于八大基本类型之中,但是请大家别忘了还有引用数据类型这个东东,也就是对象数组。

2.然后关于对象组数的排序问题也就会产生,他不像我们之前的基本类型数组一样,直接for 循环迭代,或者Arrays.sort()直接输出。

3.然而此刻我们就会想到集合中的comparable接口和comparator 比较器,那么关于数组也是否可以用此来排序呢?

4.直接上代码:-----------------------------------------------------------------------------------------

//首先建立一个学生类,用来实现comparable接口,下面重写 toString 方法以及CompareTo;

public class Student implements Comparable<Object> {
    private String name;
    private String gender;
    private int scores;
    
    public Student() {
    }

    public Student(String name, String gender, int scores) {
        super();
        this.name = name;
        this.gender = gender;
        this.scores = scores;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getScores() {
        return scores;
    }

    public void setScores(int scores) {
        this.scores = scores;
    }
    public String toString() {
        return name+"\t"+gender+"\t"+scores;
        }
    @Override
    public int compareTo(Object o) {
         Student s = (Student) o;  //类型强制转换
         if(this.scores>s.scores)return 1;
         else return -1;
    }
    }

//到这一步大家就可以清楚地知道我们用comparable接口来比较学生的成绩来进行排序。

//接下来第二段代码--------------------------------------------------------------------------------------------

public class ObjectArray {

    public static void main(String[] args) {
        Student s1=new Student("张三","男",81);
        Student s2=new Student("张四","女",91);
        Student s3=new Student("张五","男",100);
        Student s4=new Student("张其","男",92);
        Student s5=new Student("李武","女",78);
        //将值传到数组中
        Student s[]=new Student[]{s1,s2,s3,s4,s5};
        System.out.println("------------------打印输出-------------------------------");
        for (int i = 0; i < s.length; i++) {
            Student student=s[i];
            System.out.println(student);
        }
        System.out.println("-----------------------开始排序----------------------------");
        Arrays.sort(s);//直接用Arrays.sort方法排序
        for(Student x:s) {
            System.out.println(x);
        }
    }
}

阅读全文
0 0