好比将一个List<Student>
排序,则有两种方式:
1:Student实现Comparable接口:
2:给排序方法传递一个Comparator参数:java
请看下面的举例:
Student类:ide
package demo; //Student实现Comparable,须要实现compareTo方法 public class Student implements Comparable<Student>{ private String name; private Integer age; public Student(String name,Integer age) { // TODO Auto-generated constructor stub this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public int compareTo(Student o) { // TODO Auto-generated method stub if(this.age>o.getAge()){ return 1; } else if(this.age<o.getAge()){ return -1; } else{ return 0; } } }
主类:this
package demo; import java.util.*; public class main { public static void main(String[] args) { // TODO Auto-generated method stub List<Student> list=new ArrayList<Student>(); Student s1=new Student("T-F", 18); Student s2=new Student("H胡歌", 28); Student s3=new Student("Z周润发", 50); Student s4=new Student("M梅兰芳", 100); list.add(s1); list.add(s4); list.add(s3); list.add(s2); Iterator iterator=list.iterator(); System.out.println("------默认排序(按年纪)-------"); Collections.sort(list); while(iterator.hasNext()){ Student s=(Student)iterator.next(); System.out.println(s.getName()+" "+s.getAge()); } System.out.println("------倒序排序-------"); Comparator comparator=Collections.reverseOrder(); Collections.sort(list,comparator); Iterator iterator_reverse=list.iterator(); while(iterator_reverse.hasNext()){ Student s=(Student)iterator_reverse.next(); System.out.println(s.getName()+" "+s.getAge()); } System.out.println("------根据姓名排序-------"); Collections.sort(list,new Comparator<Student>(){ @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub return o1.getName().compareTo(o2.getName()); }} ); Iterator iterator_name=list.iterator(); while(iterator_name.hasNext()){ Student s=(Student)iterator_name.next(); System.out.println(s.getName()+" "+s.getAge()); } } }
执行结果:
------默认排序-------
T-F 18
H胡歌 28
Z周润发 50
M梅兰芳 100
------倒序排序-------
M梅兰芳 100
Z周润发 50
H胡歌 28
T-F 18
------根据姓名排序-------
H胡歌 28
M梅兰芳 100
T-F 18
Z周润发 50code