comparable与comparator的区别

1、二者相同点

二者都是Java的一个接口,都是用来对自定义类进行大小比较的。

自定义类:

public class Person

{

String  name;

int age;

}

2、二者区别

Comparable是比较在类内部实现,需要重写compareTo()方法。例如:

public  class Person implements Comparable

{

String name;

int age;

public  int  compareTo(Person anthor)

        {

if(name.compareTo(anther.name) == 0) //如果名字一样

{

return this.age - anthor.age;//按年龄比较

}

else

{

return name.compareTo(anther.name);//否则按名字比较

}

}

}

这样可以直接使用Collections.sort(personList)直接排序。

Comparator是定义在类外部的比较器,不改变自定类的结构,需要重写compare()方法。例如:

public PersonComparetor implements Comparator

{

public int compare(Person p1,Person p2)

{

if(p1.name.compareTo(p2.name) == 0) //如果名字一样

{

return p1.age - p2.age;//按年龄比较

}

else

{

return p1.name.compareTo(p2.name));//否则按名字比较

}

}

}

这样可以使用Collections.sort(personList,new personComparator)进行排序。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值