比较器的引出Comparable 范例:实现自定义对象数组排序操作 1package cn.cccc.demo;2import java.util.Arrays;3public class Demo {4 public static void main(String[] args) {5 Person data [] = new Person [] {6 new Person("cc",20),7 new Person("ww",18)8 };9 10 Arrays.sort(data);11 System.out.println(Arrays.toString(data));12 }13}14class Person implements Comparable<Person>{15 private String name;14 collapsed lines16 private int age;17 public Person(String name , int age){18 this.name = name;19 this.age = age;20 }21 public String toString(){22 return "[个人信息]姓名"+this.name+"年龄:"+this.age;23 }24 @Override25 public int compareTo(Person per) {26 // TODO Auto-generated method stub27 return per.age-this.age;28 }29} Comparator比较器 是一种挽救类的比较器,其主要的目的是解决一些没有使用Comparabnle排序的类的对象数组排序。 范例:现在项目已经开发完成了,并且由于先期的设计并没有去考虑到所为的比较器功能。 范例: 1package cn.cccc.demo;2import java.util.Arrays;3public class Demo {4 public static void main(String[] args) {5 Person data [] = new Person [] {6 new Person("cc",20),7 new Person("ww",18)8 };9 }10}11class Person{12 private String name;13 private int age;14 public Person(String name , int age){15 this.name = name;6 collapsed lines16 this.age = age;17 }18 public String toString(){19 return "[个人信息]姓名"+this.name+"年龄:"+this.age;20 }21} 后来经过若干个版本的迭代更新只有发现需要对Person类进行排序处理,但是又不能够去使用Comparable接口,所以这个时候就需要采用一种挽救的形式来实现比较。 范例:实现自定义规则排序 1package cn.cccc.demo;2import java.util.Arrays;3import java.util.Comparator;4public class Demo {5 public static void main(String[] args) {6 Person data [] = new Person [] {7 new Person("cc",20),8 new Person("ww",18)9 };10 Arrays.sort(data, new PersonComparator());11 System.out.println(Arrays.toString(data));12 }13}14class Person{15 private String name;27 collapsed lines16 private int age;17 public Person(String name , int age){18 this.name = name;19 this.age = age;20 }21 public String getName() {22 return name;23 }24 public void setName(String name) {25 this.name = name;26 }27 public int getAge() {28 return age;29 }30 public void setAge(int age) {31 this.age = age;32 }33 public String toString(){34 return "[个人信息]姓名"+this.name+"年龄:"+this.age;35 }36}37class PersonComparator implements Comparator<Person>{38 @Override39 public int compare(Person o1, Person o2) {40 return o1.getAge() -o2.getAge();41 }42}