public class Student {
private int studentId;
private String studentName;
private int age;
public Student(int studentId , String studentName, int age){
this.studentId=studentId;
this.studentName=studentName;
this.age=age;
}
public int getStudentId() {
return studentId;
}
public void setStudentId(int studentId) {
this.studentId = studentId;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} } import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator; public class test { /**
* @param args
*/
public static void main(String[] args) {
Comparator<Student> comparator = new Comparator<Student>() {
public int compare(Student s1, Student s2) {
// 先排年龄
if (s1.getAge() != s2.getAge()) {
return s1.getAge() - s2.getAge();
} else if (!s1.getStudentName().equals(s2.getStudentName())) {
// 年龄相同则按姓名排序
return s1.getStudentName().compareTo(s2.getStudentName());
} else {
// 姓名也相同则按学号排序
return s1.getStudentId() - s2.getStudentId();
}
}
};
Student stu1 = new Student (1,"zhangsan",28);
Student stu2 = new Student (2,"zhagnsan",19);
Student stu3 = new Student (3,"wangwu",19);
Student stu4 = new Student (4,"wangwu",19);
Student stu5 = new Student (5,"zhaoliu",18); ArrayList<Student> list = new ArrayList<Student>();
list.add(stu1);
list.add(stu2);
list.add(stu3);
list.add(stu4);
list.add(stu5);
//这里就会自动根据规则进行排序
Collections.sort(list,comparator);
for(int i=0;i<list.size();i++){
Student stu=list.get(i);
System.out.println("年龄:"+stu.getAge()+" 姓名:"+stu.getStudentName()+" 学号:"+stu.getStudentId());
} } } 第二个是实现Comparable接口 public class Student2 implements Comparable<Student2>{ //必须实现CompareTo()
private int studentId;
private String studentName;
private int age;
public Student2(int studentId , String studentName, int age){
this.studentId=studentId;
this.studentName=studentName;
this.age=age;
}
public int getStudentId() {
return studentId;
}
public void setStudentId(int studentId) {
this.studentId = studentId;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int compareTo(Student2 o) {
if(age!=o.getAge()){
return age-o.getAge();
}else if(!studentName.equals(o.getStudentName())){
return studentName.compareTo(o.getStudentName());
}else {
return studentId-o.getStudentId();
}
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Student2){
Student2 stu=(Student2)obj;
if((age==stu.getAge())&&(studentName.equals(stu.getStudentName()))&&(studentId==stu.getStudentId())){
return true;
}else
return true;
}else{
return false;
}
} } import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator; public class test2 { /**
* @param args
*/
public static void main(String[] args) {
Student2 stu1 = new Student2 (1,"zhangsan",28);
Student2 stu2 = new Student2 (2,"zhagnsan",19);
Student2 stu3 = new Student2 (3,"wangwu",19);
Student2 stu4 = new Student2 (4,"wangwu",19);
Student2 stu5 = new Student2 (5,"zhaoliu",18); ArrayList<Student2> list = new ArrayList<Student2>();
list.add(stu1);
list.add(stu2);
list.add(stu3);
list.add(stu4);
list.add(stu5);
//这里就会自动根据规则进行排序
Collections.sort(list);
for(int i=0;i<list.size();i++){
Student2 stu=list.get(i);
System.out.println("年龄:"+stu.getAge()+" 姓名:"+stu.getStudentName()+" 学号:"+stu.getStudentId());
} } } 结果: 年龄:18 姓名:zhaoliu 学号:5 年龄:19 姓名:wangwu 学号:3 年龄:19 姓名:wangwu 学号:4 年龄:19 姓名:zhagnsan 学号:2 年龄:28 姓名:zhangsan 学号:1 注:大家可以看下api文档里对接口 Comparable<T>接口的介绍,里面说是建议重写equals方法,否则可能出现怪异的表现

最新文章

  1. 安装完成后在命令行运行bash时报错0x80070057
  2. [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序
  3. 原生JS获取元素集合的子元素宽度
  4. JVM-操作码助记符
  5. python命令行下安装redis客户端
  6. android studio异常关机后出现的问题
  7. 第六百零七八天 how can I 坚持
  8. css3渐变(Gradients)
  9. struts1 核心类
  10. Scrum介绍
  11. c与c++中的extern const的区别和联系
  12. 安装Google框架服务并突破Google Play下载限制
  13. 基于Qt QGraphicsView的多点触摸绘图
  14. 段落p元素内的响应式文本布局就靠rem单位实现
  15. 推荐60个jQuery插件(转)
  16. CSRF与JSON
  17. linux 下的ssh免密登陆设置
  18. [Java基础] Java float保留两位小数或多位小数
  19. JavaScript跨域总结与解决办法(转)
  20. Chrome浏览器缓存查看工具-ChromeCacheView

热门文章

  1. easyui 布局标题纵向排列
  2. String框架搭建的基本步骤,及从 IOC &amp; DI 容器中获取 Bean(spring框架bean的配置)--有实现数据库连接池的链接
  3. 【20160924】GOCVHelper综述
  4. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo
  5. ural 1114,计数dp
  6. vim退出
  7. dg_MeetingRoom 居中显示
  8. 【Regular Expression】常用的正则表达式
  9. 《微信开发日志》之OAuth2验证接口
  10. &lt;iframe&gt;标签的一些说明