1、原则

Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法:
int compare(Object o1, Object o2) 返回一个基本类型的整型
如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
如果要按照降序排序,则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)

 import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; public class UserComparator implements Comparator < User > { public static void main( String[] args ) {
List < User > users = new ArrayList < User >();
users.add( new User( 10, "a" ) );
users.add( new User( 11, "d" ) );
users.add( new User( 15, "s" ) );
users.add( new User( 6, "x" ) );
users.add( new User( 17, "a" ) );
users.add( new User( 17, "b" ) );
users.add( new User( 17, "c" ) );
users.add( new User( 17, "d" ) );
UserComparator comparator = new UserComparator(); users.sort( comparator );
// 也可以使用:Collections.sort( users, comparator ); for ( User u : users ) {
System.out.println( u );
}
} @Override
public int compare( User u1, User u2 ) {
if ( u1.equals( u2 ) ) {
return 0;
}
else if ( u1.getAge() < u2.getAge() ) {
return 1;
}
else if ( u1.getAge() == u2.getAge() ) {
int f = u1.getName().compareTo( u2.getName() );
if ( f < 0 ) {
return -1;
}
return 0;
}
else {
return -1;
}
}
} class User {
private int age;
private String name; public User() { } public User( int age, String name ) {
this.age = age;
this.name = name;
} public int getAge() {
return age;
} public void setAge( int age ) {
this.age = age;
} public String getName() {
return name;
} public void setName( String name ) {
this.name = name;
} @Override
public String toString() {
return "User [age=" + age + ", name=" + name + "]";
} }
User [age=17, name=a]
User [age=17, name=b]
User [age=17, name=c]
User [age=17, name=d]
User [age=15, name=s]
User [age=11, name=d]
User [age=10, name=a]
User [age=6, name=x]

最新文章

  1. 帆软报表FineReport中数据连接之Weblogic配置JNDI连接
  2. Java集合源码分析(二)ArrayList
  3. iOS 更改webView文字颜色丶文字大小丶背景色的方法
  4. Debian8修改启动默认运行级别
  5. centos安装CODEBLOCKS
  6. float使内联支持宽高
  7. 项目中重新引用WCF报错
  8. c#抓取动态页面WebBrowser
  9. richedit设置滚动条的位置和更新内容
  10. 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】
  11. 认识 Java Message Service
  12. Windows Server 2016-命令行Ntdsutil迁移FSMO角色
  13. Netty 4源码解析:请求处理
  14. sql server中的while循环语句
  15. quill富文本编辑器 API
  16. 201621123001 《Java程序设计》第10周学习总结
  17. 序列化ADODataSet, ADOQuery
  18. css基础 -文本溢出 text-overflow:ellipsis;
  19. go语言基本介绍
  20. SCOJ 4427: Miss Zhao&#39;s Graph dp

热门文章

  1. Redis入门实例(Redis+Sprint+maven创建工程)
  2. 贴现力 (force of discount)
  3. mysql实现‘主从复制’
  4. Hibernate初探之一对多映射 及 myeclipse自动生成hibernate文件方法
  5. June 25th 2017 Week 26th Sunday
  6. 一、异步编程模型(APM)
  7. OC NSMutableArray
  8. UVALive 4025 Color Squares(BFS)
  9. nssm 在windows上部署服务
  10. docker-1-简介