关于Comparator的使用

排序的算法是我们最常用的算法,初学程序,每个人都尝试过排序。但只是局限于简单的排序。 
如将下列数字进行排序 
1,3,5,8,3,6 
于是我们得出结果 
1,3,3,5,6,8 
将下列字母(字符)进行排序 
a,i,e,f,w,s 
于是我们得出结果 
a,e,f,i,s,w 
但是我们遇到的情况就不是如此简单了。如给公司里的商品进行排序,我们很轻易的想到按照商品的名称排序不就完了,而且简单明了。但现实并如我们相信般简单。同一商品名称可以有不同的批次,进货时间,可能还会有单价的不同。显然只根据商品名称排序是不合理的。 

再举个简单例子然后用程序实现。如公司要将员工进行排序(不要说领导排在前面),假设我们的需求比较复杂。先进行姓排序,谁的姓拼音靠前,谁就排前面。然后对名字进行排序。恩.如果同名,女性排前头。如果名字和性别都相同,年龄小的排前头。ok,一个也不算复杂的需求。 

如果对java比较熟悉的会知道java.util.Comparator 接口。要实现里面的函数 
int compare(Object o1, Object o2) 返回一个基本类型的整型,返回负数表示o1 小于o2,返回0 表示o1和o2相等,返回正数表示o1大于o2。 

 

下面来举个比较简单的例子来看看Comparator的用法

首先,我们写一个Person类

 

接下来写一个年龄比较器

 

最后写一个测试类来测试这个方法

 

最后通过运行测试类

得到下面结果

年龄:1 姓名:Jack

年龄:2 姓名:Ruby

年龄:3 姓名:Petter

年龄:5 姓名:Tom

年龄:6 姓名:Ann

年龄:12 姓名:Jim

 

我们可以看出程序以及帮我们进行了排序。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值