Collections.sort(List);只能传List集合
例1:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test{
public static void main(String[] args) {
List<String> list = new ArrayList();
list.add("abf");
list.add("abb");
list.add("abg");
list.add("aba");
Collections.sort(list);
for(String data:list){
System.out.println(data);
}
}
}
例2:
List中有自定义类的对象时,需要自定义类继承Comparable接口重写CompareTo()方法或创建比较器类Compartor。
import java.util.*;
public class Test{
private static Object StudentComparator;
public static void main(String[] args) {
List<Student> list = new ArrayList();
list.add(new Student(100));
list.add(new Student(10));
list.add(new Student(30));
Collections.sort(list,new StudentComparator());
for(Student s:list){
System.out.println(s);
}
}
}
class Student{
int age;
public Student(int age) {
this.age = age;
}
@Override
public String toString() {
return this.age+" ";
}
}
class StudentComparator implements Comparator<Student>{//比较器,也可以使用匿名内部类
public int compare(Student o1, Student o2) {
return o1.age-o2.age;
}
}
例3:
对Set集合的排序可以通过构造方法将Set转换成List再排序。
import java.util.*;
public class Test{
private static Object StudentComparator;
public static void main(String[] args) {
Set<Student> set= new HashSet();
set.add(new Student(100));
set.add(new Student(10));
set.add(new Student(30));
List<Student> list = new ArrayList(set);//转换
Collections.sort(list);
for(Student s:list){
System.out.println(s);
}
}
}
class Student implements Comparable<Student>{
int age;
public Student(int age) {
this.age = age;
}
@Override
public String toString() {
return this.age+" ";
}
@Override
public int compareTo(Student o) {
return this.age-o.age;
}
}