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 + "]";
}
}
Java-集合对象比较
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 关于对象池,形象地说就是事先创建好了一些某类型的对象放在对象池中。当程序(线程)需要使用这种对象的时候,直接从对象...