package Hello1;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Test11 {
public static void main(String[] args) {
// String[] ss = {"cxxm","aegr","die","poit"};
// Arrays.sort(ss); //有s的Arrays表明是一种工具类,所有方法都是静态的 不需要实例化 sort方法可以排序基本数据类型
// //也是可以排序对象,但是要继承comparable接口,自定义排序规则
// for(String s:ss) {
// System.out.println(s);
// }
Student[] xx = { //定义一个对象数组
new Student("cxm",34),
new Student("axm",36),
new Student("ssm",32),
new Student("kxm",31),
};
List<Student> LL= Arrays.asList(xx);
Collections.sort(LL);
for(Student ss: xx) {
System.out.println(ss.toString());
}
}
}
class Student implements Comparable<Student>{
//Student实现Comparable接口,但是如果是想按照年龄来排序的话,就会频繁地更改了Student内的代码,非常不灵活
//解决思路:实例化一个比较器,比较逻辑就在比较器内定义,然后collections.sort(LL,c1)就传入一个比较器对象 c1是比较器
//注意一旦传入了比较器对象,那么比较逻辑就会用c1里面的
public String name;
public int age;
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public int compareTo(Student o) {
//System.out.println("this age"+this.age);
//Comparable 有个compareto的方法,实现类必须实现
//return this.age-o.age; //compareTo最后返回的是负正整数的,负数的排行前面
//return this.age.compareTo(o.age); 报错:无法在原始类型int上调用compareTo(int)
return this.name.compareTo(o.name); //String本身实现了compareTo方法
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
网友评论