比如将一个List<Student>排序,则有两种方式:

1:Student实现Comparable接口:

2:给排序方法传递一个Comparator参数:

请看下面的举例:

Student类:

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;
}
}
}

主类:

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周润发 50

最新文章

  1. 《Ext JS模板与组件基本框架图----组件》
  2. CentOS 7 最小化安装的无线网络配置
  3. UC脱茧蜕变,移动资讯市场格局再生变
  4. Java解析XML三种常用方法
  5. Hello world!让 grub2 引导自己的操作系统 Xos 内核
  6. next_permutation()函数 和 prev_permutation() 按字典序求全排列
  7. PDO封装函数
  8. IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
  9. seajs加载jquery提示$ is not a function
  10. 蓝色巨人IBM
  11. The authenticity of host &#39;github.com (192.30.253.113)&#39; can&#39;t be established.
  12. loadrunner 录制中文出现乱码的解决办法
  13. Linux中keepalived+LVS负载均衡的搭建测试
  14. 一个垃圾的Android权限框架
  15. ubuntu16.04搭建geodjango+postgresql+postgis的WebGIS框架(二))安装postgresql和postgis
  16. (object) array
  17. linux 下常用部分命令
  18. linux 程序移植到Android
  19. java===java基础学习(16)---final
  20. Android Service基本知识总结(一)

热门文章

  1. 77. Combinations
  2. 59. Spiral Matrix II
  3. Android WIFI 操作
  4. python 批量更换图片格式脚本
  5. AutoResetEvent
  6. oh my zsh设置
  7. 【转载】git命令和svn的对比
  8. 在Windows下通过命令行或者.bat文件统计一个目录中文件数量
  9. EXT 数据按F12,F11 显示问题
  10. 【C#学习笔记】播放wma/mp3文件