Collections.sort 排序第一种:直接排序
import java.util.*;
public class test {
public static void main(String[] args){
List<Integer> archinfolist = Arrays.asList(1,4,2,6,56,24);
System.out.println(archinfolist);
Collections.sort(archinfolist);
System.out.println(archinfolist);
}
}
结果:
[1, 4, 2, 6, 56, 24]
[1, 2, 4, 6, 24, 56]
第二种:想要降序排列
import java.util.*;
public class test {
public static void main(String[] args){
List<Integer> archinfolist = Arrays.asList(1,4,2,6,56,24);
System.out.println(archinfolist);
Collections.sort(archinfolist,new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// o1-o2是升序,o2-o1是降序。
/**换言之
* 升序排的话就是第一个参数.compareTo(第二个参数);所以o1-o2 等同于o1.compareTo(o2)
* 降序排的话就是第二个参数.compareTo(第一个参数);所以o2-o1 等同于o2.compareTo(o1)
*/
return o1-o2;
}
});
System.out.println(archinfolist);
}
}
第三种,自定义的对象放到list中,还想要降序排列
import java.util.Comparator;
public class Person implements Comparable<Person> {
// 学生姓名
private String name;
// 学生年龄
private int age;
// 带参构造
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
// getXxx() setXxx()方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Person s) {
int num = this.age - s.age;
int num2 = num == 0 ? this.name.compareTo(s.name) : num;
return num2;
}
}
import java.util.*;
public class test {
public static void main(String[] args){
// 创建集合对象
List<Person> list = new ArrayList<Person>();
// 创建对象
Person s1 = new Person("荆轲", 20);
Person s2 = new Person("亚瑟", 49);
Person s3 = new Person("鲁班七号", 28);
Person s4 = new Person("兰陵王", 36);
Person s5 = new Person("后羿", 12);
// 添加学生对象到list
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);
// 遍历
System.out.println("------------原始顺序---------------");
for (Person s : list) {
System.out.println(s.getName() + "---" + s.getAge());
}
// 比较器排序
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person s1, Person s2) {
int num = s1.getAge() - s2.getAge();
//comparator里面,-1代表小于,0代表等于,1代表大于
int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
return num2;
}
});
// 遍历
System.out.println("------------比较器排序--------------");
for (Person s : list) {
System.out.println(s.getName() + "---" + s.getAge());
}
}
}