Java教程-集合中的排序

集合中的排序
我们可以对以下元素进行排序:
- 字符串对象
- 包装类对象
- 用户自定义类对象
Collections类提供了用于对集合元素进行排序的静态方法。如果集合元素属于Set类型,我们可以使用TreeSet进行排序。然而,我们不能对List的元素进行排序。Collections类提供了对List类型元素进行排序的方法。
Collections类用于排序List元素的方法
public void sort(List list):用于对List的元素进行排序。List元素必须是Comparable类型。
注意:String类和包装类实现了Comparable接口。因此,如果存储的是字符串或包装类的对象,它们将是可比较的。
对字符串对象进行排序的示例
import java.util.*;
class TestSort1 {
public static void main(String args[]) {
ArrayList<String> al = new ArrayList<String>();
al.add("Viru");
al.add("Saurav");
al.add("Mukesh");
al.add("Tahir");
Collections.sort(al);
Iterator itr = al.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
}
}
}
输出结果:
Mukesh
Saurav
Tahir
Viru
对字符串对象按逆序排序的示例
import java.util.*;
class TestSort2 {
public static void main(String args[]) {
ArrayList<String> al = new ArrayList<String>();
al.add("Viru");
al.add("Saurav");
al.add("Mukesh");
al.add("Tahir");
Collections.sort(al, Collections.reverseOrder());
Iterator i = al.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
}
输出结果:
Viru
Tahir
Saurav
Mukesh
对包装类对象进行排序的示例
import java.util.*;
class TestSort3 {
public static void main(String args[]) {
ArrayList al = new ArrayList();
al.add(Integer.valueOf(201));
al.add(Integer.valueOf(101));
al.add(230); // 在内部将转换为对象:Integer.valueOf(230)
Collections.sort(al);
Iterator itr = al.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
}
}
}
输出结果:
101
201
230
对用户自定义类对象进行排序的示例
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 TestSort4 {
public static void main(String[] args) {
ArrayList<Student> al = new ArrayList<Student>();
al.add(new Student("Viru"));
al.add(new Student("Saurav"));
al.add(new Student("Mukesh"));
al.add(new Student("Tahir"));
Collections.sort(al);
for (Student s : al) {
System.out.println(s.name);
}
}
}
输出结果:
Mukesh
Saurav
Tahir
Viru