package Collection;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Test {
public static void main(String[] args) {
//创建List集合,存储Person对象
List list = new ArrayList<>();
//添加元素
list.add(new Person("lisi", 18));
list.add(new Person("feifei", 28));
list.add(new Person("zhang", 33));
list.add(new Person("yong", 35));
//打印输出的顺序就是添加的顺序
System.out.println( list );
//[Person [name=lisi, age=18], Person [name=feifei, age=28], Person [name=zhang, age=33], Person [name=yong, age=35]]
//对List集合中的元素排序, 想要对List集合中的Person对象按照年龄降序排序
//调用方法时,传递Comparator的匿名内部类对象, 通过泛型指定比较对象的数据类型
// list.sort(new Comparator() {
// //在匿名内部类重写接口的抽象方法
// @Override
// public int compare(Person o1, Person o2) {
// //在compare方法中指定比较规则 , 按年龄降序
// return o2.age - o1.age; //如果o1的年龄大返回负数, o2年龄大返回正数
return o1.age - o2.age; //如果o1的年龄大返回正数, o2年龄大返回负数
// }
// });
list.sort(new Comparator() {
@Override
public int compare(Person o1, Person o2) {
// return o1.age-o2.age;
return o2.age-o1.age;
}
});
System.out.println( list );
//对List排序, 根据姓名升序
// list.sort(new Comparator() {
// @Override
// public int compare(Person o1, Person o2) {
return o1.name.compareTo(o2.name); //姓名升序
// return o2.name.compareTo(o1.name); //姓名降序
// }
// });
list.sort(new Comparator() {
@Override
public int compare(Person o1, Person o2) {
return o1.name.compareTo(o2.name);
}
});
System.out.println(list);
}
static class Person{
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public boolean equals(Object o){
if(o==null||!(o instanceof Person)){
return false;
}
else if(this==o){
return true;
}
else {
Person p=(Person) o;
if(this.name.equals(p.name));
return true;
}
}
public String toString(){
return this.name+" "+this.age;
}
}
}
o1 在前为升序排序
o2 在前为降序排序
具体实现看源码



