首页 > 代码库 > List排序

List排序

今天项目中涉及到对list的排序,特记录于此:
在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。
  你能够使用java.util.Collections类中的sort()方法对List元素进行排序。你既可以给方法传递一个List对象,也可以传递一个List和一个Comparator。如果列表中的元素全都是相同类型的类,并且这个类实现了Comparable接口,你可以简单的调用Collections.sort()。如果这个类没有实现Comparator,你也可以传递一个Comparator到方法sort()中,进行排序。如果你不想使用缺省的分类顺序进行排序,你同样可以传递一个Comparator到方法sort()中来进行排序。

技术分享

 

首先按照第一中进行排序:

java程序如下:

按照年龄进行排序:

import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Student implements Comparable {    private int id;    private int age;    private String name;    public Student(int id,int age, String name){        this.id=id;        this.age = age;        this.name = name;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "Student [id=" + id + ", age=" + age + ", name=" + name + "]";    }            public static void main(String args[]){        List<Student> list=new ArrayList<Student>();        for(int i=10;i>0;i--){            list.add(new Student(i,i+10,"小莉"+i));        }                Collections.sort(list);        for(Student s: list){            System.out.println(s+"");        }    }    public int compareTo(Object o) {        if(o instanceof Student){            Student s=(Student)o;            if(this.age>s.age){                return 1;            }            else{                return 0;            }        }        return -1;    }    }

 

结果如下:

Student [id=10, age=20, name=小莉10]
Student [id=9, age=19, name=小莉9]
Student [id=8, age=18, name=小莉8]
Student [id=7, age=17, name=小莉7]
Student [id=6, age=16, name=小莉6]
Student [id=5, age=15, name=小莉5]
Student [id=4, age=14, name=小莉4]
Student [id=3, age=13, name=小莉3]
Student [id=2, age=12, name=小莉2]
Student [id=1, age=11, name=小莉1]

按照第二种进行排序:

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;public class ListSort {  public static void main(String[] args) {    ArrayList list = new ArrayList();    list.add("92");    list.add("68");    list.add("168");    list.add("242");    list.add("317");    list.add("105");    // 字符串排序    Collections.sort(list);    System.out.println(list.toString()); // [105, 168.61, 242, 317, 68.9, 92.8]    Collections.sort(list, new Comparator() {      @Override      public int compare(Object o1, Object o2) {        return new Double((String) o1).compareTo(new Double((String) o2));      }    });    System.out.println(list.toString()); // [68.9, 92.8, 105, 168.61, 242, 317]  }}

结果为:

 

[105, 168, 242, 317, 68, 92]
[68, 92, 105, 168, 242, 317]

List排序