JAVA_两种比较器的实现
2011-12-09 20:09
381 查看
package com.kk.Collection; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class CompareTest { public static void main(String[] args) { List<Student> list=new ArrayList<Student>(10); list.add(new Student(1,"jj")); list.add(new Student(0,"ww")); list.add(new Student(0,"kk")); list.add(new Student(2,"ll")); Collections.sort(list); //内部比较器:要排序的对象实现Comparable接口,可以对自身进行比较 System.out.println(list); List<Teacher> t=new ArrayList<Teacher>(10); t.add(new Teacher(1,12)); t.add(new Teacher(0,13)); t.add(new Teacher(0,14)); t.add(new Teacher(2,15)); Collections.sort(t,new StudentComparator()); //外部比较器:通过实现Comparator接口 System.out.println(t); } } class Student implements Comparable { int num; String name; public Student(int num, String name) { this.num = num; this.name = name; } @Override public String toString() { return "\r\tnum:"+num+" name:"+name+"\r"; } public int compareTo(Object o) { Student tmp=(Student) o; int result=tmp.num>num?1:(tmp.num==num?0:-1); if (result==0) { result=tmp.name.indexOf(0)>name.indexOf(0)?1:-1; } return result; } } class Teacher{ int num; double salary; public Teacher(int num, double salary) { this.num = num; this.salary = salary; } @Override public String toString() { return "\r\tnum:"+num+" salary:"+salary+"\r"; } } class StudentComparator implements Comparator{ public int compare(Object o1, Object o2) { Teacher t1=(Teacher) o1; Teacher t2=(Teacher) o2; int result=t1.num>t2.num?1:(t1.num==t2.num?0:-1); return result=result==0?(t1.salary<t2.salary?1:-1):result; } }
相关文章推荐
- Java中两种比较器的实现
- JAVA_两种比较器的实现
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java中有两种实现多线程的方式以及两种方式之间的区别
- 二、C++迭代器的两种实现方式 (Range for和C#、Java中的foreach)
- Java异步I/O编程实现的两种方式:将来式和回调式
- java实现多线程有两种方法
- java中匿名内部类的两种实现方式
- Java多线程:常用的实现多线程的两种方式
- java实现线程的两种方式
- 用线程和接口两种方法实现的java秒表
- Java多线程:创建线程的两种实现方式
- java Thread编程(三) 同步的两种不同实现方式
- JAVA中 Spring定时器的两种实现方式
- Java多线程实现的两种方式
- Java中三种代理方式—— 静态代理与两种动态代理的实现机制
- View动画的XML与Java代码实现的两种方式,交叉着用
- Java中实现序列化的两种方式 Serializable 接口和 Externalizable接口
- 在Java中实现线程的两种方法
- 对于JAVA系统中的定时操作有两种实现方式(针对oarcle)