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