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);
}
}
}