Java 集合排序

1 集合元素的排序

我们可以对以下元素进行排序:

  1. 字符串对象
  2. 包装类对象
  3. 用户自定义对象

Collections类提供用于对集合的元素进行排序的静态方法。如果集合元素为Set类型,则可以使用TreeSet。但是,我们无法对List的元素进行排序。Collections类提供用于对List类型元素的元素进行排序的方法。

2 Collections sort方法

public void sort(List list)

用于对List的元素进行排序。List中的元素必须实现Comparable接口。

注意:String类和包装类都实现了Comparable接口。因此,如果在集合中存储字符串对象和包装类对象,是可以排序的。

3 字符串正序排序

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java Collections 排序的例子
 */
import java.util.*;

class Demo{
    public static void main(String args[]){

        ArrayList<String> al=new ArrayList<String>();
        al.add("Eric");
        al.add("Jack");
        al.add("Rose");
        al.add("Lucy");

        Collections.sort(al);
        Iterator itr=al.iterator();
        while(itr.hasNext()){
            System.out.println(itr.next());
        }
    }
}

输出结果为:

Eric
Jack
Lucy
Rose

4 字符串倒序排序

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java Collections 排序的例子
 */
import java.util.*;

class Demo{

    public static void main(String args[]){

        ArrayList<String> al=new ArrayList<String>();
        al.add("Eric");
        al.add("Jack");
        al.add("Rose");
        al.add("Lucy");

        Collections.sort(al,Collections.reverseOrder());
        Iterator i=al.iterator();
        while(i.hasNext())
        {
            System.out.println(i.next());
        }
    }
}

输出结果为:

Rose
Lucy
Jack
Eric

5 包装类型排序

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java Collections 排序的例子
 */
import java.util.*;

class Demo{

    public static void main(String args[]){

        ArrayList al=new ArrayList();
        al.add(Integer.valueOf(201));
        al.add(Integer.valueOf(101));
        al.add(230);//internally will be converted into objects as Integer.valueOf(230)

        Collections.sort(al);

        Iterator itr=al.iterator();
        while(itr.hasNext()){
            System.out.println(itr.next());
        }
    }
}

输出结果为:

101
201
230

6 自定义对象排序

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java Collections 排序的例子
 */
import java.util.*;

class Student implements Comparable<Student> {
    public String name;
    public Student(String name) {
        this.name = name;
    }
    public int compareTo(Student person) {
        return name.compareTo(person.name);

    }
}

public class Demo {

    public static void main(String[] args) {
        ArrayList<Student> al=new ArrayList<Student>();
        al.add(new Student("Eric"));
        al.add(new Student("Jack"));
        al.add(new Student("Mark"));
        al.add(new Student("Rose"));

        Collections.sort(al);
        for (Student s : al) {
            System.out.println(s.name);
        }
    }
}

输出结果为:

Eric
Jack
Mark
Rose