Java List排序

List排序大体上分为如下两类:

1、List<Integer> 对Integer、String等类型的List排序

2、List<Object> 对自定义对象的排序

本文代码例子只进行简单的介绍,仅起到抛砖引玉作用,读者可以自行开发哈。

1、对List<Integer>进行排序

代码如下:

 1 List<Integer> l = new ArrayList<Integer>();
 2 l.add(3);
 3 l.add(1);
 4 l.add(2);
 5 l.add(9);
 6 l.add(7);
 7 
 8 Collections.sort(l);//默认排序(从小到大)
 9 for(int i : l){
10     System.out.println(i);
11 }
12 
13 Collections.reverse(l);//倒叙(从大到小)
14 for(int i : l){
15     System.out.println(i);
16 }

代码运行后结果为 12379 97321 先是正序输出(默认从小到大) 后是倒叙输出(从大到小)。

2、对List<Object>进行排序

对自定义的对象进行排序,首先对象需要实现Comparable接口,然后重写compareTo方法。代码如下:

实体对象

 1 /*
 2  * 学生实体
 3  */
 4 class Student implements Comparable<Student>{
 5     public Integer Age = 0;
 6     public String Name = "";
 7     
 8     public Integer getAge() {
 9         return Age;
10     }
11     public void setAge(int age) {
12         Age = age;
13     }
14 
15     public String getName() {
16         return Name;
17     }
18     public void setName(String name) {
19         Name = name;
20     }
21 
22     public Student(int age,String name){
23         this.Age = age;
24         this.Name = name;
25     }
26     
27     @Override
28     public int compareTo(Student s) {
29         //自定义比较方法,如果认为此实体本身大则返回1,否则返回-1
30         if(this.Age >= s.getAge()){
31             return 1;
32         }
33         return -1;
34     }
35 }

排序代码实例:可以用list.sort()排序,也可以用Collections.sort()排序,结果都是一样的

 1 List<Student> list = new ArrayList<Student>();
 2 
 3 list.add(new Student(1,"zhangsan"));
 4 list.add(new Student(6,"zhangsan"));
 5 list.add(new Student(2,"zhangsan"));
 6 list.add(new Student(9,"zhangsan"));
 7 list.add(new Student(1,"zhangsan"));
 8 
 9 list.sort(Comparator.naturalOrder());//正序比较
10 //Collections.sort(list);//正序比较
11 
12 for(Student i : list){
13     System.out.println(i.getAge());
14 }

代码只写了正序排序,结果如下:11269。

总体上排序简单的实现就是这样子,有很多不足,希望各位大大指正。^_^!!

原文地址:https://www.cnblogs.com/yinq/p/6926581.html