Cirry's Blog

比较器

2019-10-10
技术
java
最后更新:2024-03-22
3分钟
450字

比较器的引出Comparable

范例:实现自定义对象数组排序操作

1
package cn.cccc.demo;
2
import java.util.Arrays;
3
public 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
}
14
class Person implements Comparable<Person>{
15
private String name;
14 collapsed lines
16
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
@Override
25
public int compareTo(Person per) {
26
// TODO Auto-generated method stub
27
return per.age-this.age;
28
}
29
}

Comparator比较器

是一种挽救类的比较器,其主要的目的是解决一些没有使用Comparabnle排序的类的对象数组排序。 范例:现在项目已经开发完成了,并且由于先期的设计并没有去考虑到所为的比较器功能。 范例:

1
package cn.cccc.demo;
2
import java.util.Arrays;
3
public 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
}
11
class Person{
12
private String name;
13
private int age;
14
public Person(String name , int age){
15
this.name = name;
6 collapsed lines
16
this.age = age;
17
}
18
public String toString(){
19
return "[个人信息]姓名"+this.name+"年龄:"+this.age;
20
}
21
}

后来经过若干个版本的迭代更新只有发现需要对Person类进行排序处理,但是又不能够去使用Comparable接口,所以这个时候就需要采用一种挽救的形式来实现比较。 范例:实现自定义规则排序

1
package cn.cccc.demo;
2
import java.util.Arrays;
3
import java.util.Comparator;
4
public 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
}
14
class Person{
15
private String name;
27 collapsed lines
16
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
}
37
class PersonComparator implements Comparator<Person>{
38
@Override
39
public int compare(Person o1, Person o2) {
40
return o1.getAge() -o2.getAge();
41
}
42
}
本文标题:比较器
文章作者:Cirry
发布时间:2019-10-10
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
感谢大佬送来的咖啡☕
alipayQRCode
wechatQRCode