天天看点

Comparator 比较器|学习笔记

开发者学堂课程【Java 高级编程:Comparator  比较器】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:

https://developer.aliyun.com/learning/course/20/detail/362

Comparator  比较器

内容介绍:

1.基于 Comparator 的排序处理

2. Comparable 与 Comparator 的区别

Comparator 属于一种挽救的比较器支持,其主要的目的是解决一些没有使用 Comparable 排序的类的对象数组排序。

范例:现在程序项目己经开发完成了,并且由于先期的设计并没有去考虑到所谓的比较器功能。

Class Person

private String nane;

private int age;

public Person( String name, int age) {

this.name = name;

this.age = age;

}

@Override

publie int comparelo(Person per) {

return this.age-per,age;

}

@Override

public String StringtoString( ) {

Return “[Person类对象]姓名,”+this.name+“年龄”+this.age +“\n”;

}

publie class JavaAPIDDemo {

Public static void main(String[ ] args) throw Exception {

Person data [ ] = new Person[ ] {

new Person("小强-A ",80);

new Person("小强-B ",50);

new Person("小强-C",100);

Arrays.sort(data,new Personcomparator( ) );

System.out.println( Arrays.toString(data));

}

}

class Personcomparator implements Comparator<Person> {

public int compare(Person pl, Person p2) {

return pi.getAge() - p2.getAge();

}

}

后来经过了若干版本的迭代更新之后发现需要对 Person 类进行排序处理,但是又不能够去修改 Person 类(无法实现 Compparable 接口),所以这个时候就需要采用一种挽救的形式来实现比较,在 Arravs 类里面排序有另外一种实现。

基于 Comparator 的排序处理:

public static<T-voidsort(TIa. Comparator-super T>c):

Comparator 比较器|学习笔记

在 java.util.Comparator 里面最初只定义有一个排序的 compar()方法​

(public int compare(T o1.T o2)),

但是后来持续发展,又定义了许多 static 方法。

面试题:

Comparable 与 Comparator 的区别?

l java.lang.Comparable 是在类定义的时候实现的父接口,主要用于定义排序规则,里面只有 compareTo()方法。

l java.util.Comparator 是挽救的比较器操作,需要设罝单独的比较器规则类实现排序,里面有compare()方法。