您现在的位置: > 首页 > 程序开发 > Java教程
>> 最新教程
>> 热门教程
>> 最新游戏资讯
>> 热门游戏资讯
JAVA对象比较器Comparator
作者:本站                来自:安迪教程网                 加入时间:08-06-17                进入论坛讨论

  排序的算法是我们最常用的算法,初学程序,每个人都尝试过排序。但只是局限于简单的排序。

  如将下列数字进行排序

  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。

  于是我们设计的人员类要有几个变量,firstname,lastname,sex,age分别表示姓,名,性别,年龄。

publicclassPerson{  
Stringfirstname,lastname;  
Booleansex;  
Integerage;  
publicPerson(Stringfirstname,Stringlastname,Booleansex,Integerage){  
  this.firstname=firstname;  
  this.lastname=lastname;  
  this.sex=sex;  
  this.age=age;  
}  
publicStringgetFirstName(){  
  returnfirstname;  
 }  
 publicStringgetLastName(){  
  returnlastname;  
 }  
 publicBooleangetSex(){  
   returnsex;  
  }  
  publicIntegergetAge(){  
   returnage;  
  }  
//为了输入方便,重写了toString()  
publicStringtoString()  
  {  
   returnfirstname+""+lastname+""+(sex.booleanValue()?"男":"女")+""+age;  
  }  
}  
//endperson

<<< << < 1 2 3 > >> >>>
联系方式:QQ:6084884 email:agwcn@126.com 粤ICP备05055782号
本网站中发布的文章只代表发表人的个人观点,不代表安迪教程网网站的立场
copyright© 2000-2004 安迪教程网 All rights reserved agwcn.com