Cirry's Blog

比较器

Oct 10, 2019
技术 java
3分钟
450字

比较器的引出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();
}
}
本文标题:比较器
文章作者:Cirry
发布时间:Oct 10, 2019
感谢大佬送来的咖啡☕
alipayQRCode
wechatQRCode
总访问量
总访客数人次