//通过两种比较器排序//比较器////Comparable:自然排序使用// 规则:// this属性 参数对象o属性 比较// this > o 正数// this < o 负数// this == o 0////Comparator:外部比较器////////--------------------------------------//Comparable 和 Comparator区别://1.位置。// Comparable 代码写在要比较的类中;// Comparator 代码写在要比较的类外;//2.个数。// Comparable 就定义一种;// Comparator 可以定义多个比较方式。 import java.util.Arrays;public class TestTel { public static void main(String[] args) { Mumber[] mum = new Mumber[3]; Mumber m1 = new Mumber("001", "张三", 500); Mumber m2 = new Mumber("010", "李四", 1100); Mumber m3 = new Mumber("006", "王五", 200); mum[0] = m1; mum[1] = m2; mum[2] = m3; //第一种Comparable 外部比较器 Arrays.sort(mum); for(Mumber s :mum) { System.out.println(s); } }}class Mumber implements Comparable{ private String no; private String name; private int num; public String getNo() { return no; } public void setNo(String no) { this.no = no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public Mumber(String no, String name, int num) { super(); this.no = no; this.name = name; this.num = num; } @Override public int compareTo(Mumber o) { // TODO Auto-generated method stub return o.num-this.num; } @Override public String toString() { return "Student [no=" + no + ", name=" + name + ", num=" + num+"]"; } }
package day13;import java.util.Arrays;import java.util.Comparator;class Employee{ private String name; private int age; public Employee(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "Employee [name=" + name + ", age=" + age + "]"; } }public class TestSort2 { public static void main(String[] args) { Employee guojing = new Employee("yangkang", 22); Employee yangkang = new Employee("guojing", 20); Employee huangrong = new Employee("huangrong", 21); Employee [] emps = {guojing,yangkang,huangrong}; Arrays.sort(emps, new Comparator(){ @Override public int compare(Employee o1, Employee o2) { /* if(o1.getName().compareTo(o2.getName()) > 0) { return 1; }else if(o1.getName().compareTo(o2.getName()) < 0) { return -1; }else { if(o1.getAge() > o2.getAge() ) { return 1; }else if(o1.getAge() < o2.getAge()) { return -1; }else { return 0; } }*/ if(o1.getName().compareTo(o2.getName()) == 0) { return o1.getAge() - o2.getAge(); } return o1.getName().compareTo(o2.getName()); } }); for(Employee emp : emps) { System.out.println(emp); } }}