Java基础之Comparable 和 Comparator比较

1、Comparable 一般在类内部实现,覆盖compareTo方法,相当于类内部的比较器,实现了Comparable 接口的类,可用Collections.sort排序

说明:通过 x.compareTo(y) 来“比较x和y的大小”。若返回“负数”,意味着“x比y小”;返回“零”,意味着“x等于y”;返回“正数”,意味着“x大于y”。

2、Comparator 一般在类外部实现,覆盖compare方法,相当于类外部比较器,也可用Collections.sort排序,但需要将Comparator 接口当参数传入

说明: int compare(T o1, T o2) 是“比较o1和o2的大小”。返回“负数”,意味着“o1比o2小”;返回“零”,意味着“o1等于o2”;返回“正数”,意味着“o1大于o2”。

Comparable 具体代码:

public class Person implements Comparable<Person>{
	public int age;
	public String name;

	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}

	@Override
	public int compareTo(Person person) {
		return this.name.compareTo(person.name);
	}
}

 

Comparator 具体代码: 

public class MyComparator implements Comparator<Person>{
	@Override
	public int compare(Person person1, Person person2) {
		return person1.age-person2.age;
	}
}

 具体使用:

public static void main(String[] args) {
	Person Mike = new Person("MIKE",20);
	Person Paul = new Person("Paul",29);
	Person Alice = new Person("Alice",26);
	Person Bob = new Person("Bob",32);

	List<Person> PersonData = new ArrayList<>();
	PersonData.add(Mike);
	PersonData.add(Paul);
	PersonData.add(Alice);
	PersonData.add(Bob);

	System.out.println("Original:PersonData = "+PersonData.toString());
		
	Collections.sort(PersonData);
		
	System.out.println("Comparable:PersonData = "+PersonData.toString());
		
	Collections.sort(PersonData,new MyComparator());
		
	System.out.println("Comparator:PersonData = "+PersonData.toString());
}

输出结果:

Original:PersonData = [MIKE 20, Paul 29, Alice 26, Bob 32]
Comparable:PersonData = [Alice 26, Bob 32, MIKE 20, Paul 29]
Comparator:PersonData = [MIKE 20, Alice 26, Paul 29, Bob 32]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值