JAVA对象比较器Comparator
http://tech.ddvip.com 2008年06月12日 社区交流
本文详细介绍JAVA对象比较器Comparator
下面是要实现比较器
publicclass<SPANclass=hilite1>Comparator</SPAN>s{
publicstaticjava.util.<SPANclass=hilite1>Comparator</SPAN>get<SPANclass=hilite1>Comparator</SPAN>(){
returnnewjava.util.<SPANclass=hilite1>Comparator</SPAN>(){
publicintcompare(Objecto1,Objecto2){
if(o1instanceofString){
returncompare((String)o1,(String)o2);
}elseif(o1instanceofInteger){
returncompare((Integer)o1,(Integer)o2);
}elseif(o1instanceofPerson){
returncompare((Person)o1,(Person)o2);
}else{
System.err.println("未找到合适的比较器");
return1;
}
}
publicintcompare(Stringo1,Stringo2){
Strings1=(String)o1;
Strings2=(String)o2;
intlen1=s1.length();
intlen2=s2.length();
intn=Math.min(len1,len2);
charv1[]=s1.toCharArray();
charv2[]=s2.toCharArray();
intpos=0;
while(n--!=0){
charc1=v1[pos];
charc2=v2[pos];
if(c1!=c2){
returnc1-c2;
}
pos++;
}
returnlen1-len2;
}
publicintcompare(Integero1,Integero2){
intval1=o1.intValue();
intval2=o2.intValue();
return(val1<val2?-1:(val1==val2?0:1));
}
publicintcompare(Booleano1,Booleano2){
return(o1.equals(o2)?0:(o1.booleanValue()==true?1:-1));
}
publicintcompare(Persono1,Persono2){
Stringfirstname1=o1.getFirstName();
Stringfirstname2=o2.getFirstName();
Stringlastname1=o1.getLastName();
Stringlastname2=o2.getLastName();
Booleansex1=o1.getSex();
Booleansex2=o2.getSex();
Integerage1=o1.getAge();
Integerage2=o2.getAge();
return(compare(firstname1,firstname2)==0?
(compare(lastname1,lastname2)==0?(compare(sex1,sex2)==0?(compare(age1,age2)==0?0:
compare(age1,age2)):
compare(sex1,sex2)):
compare(lastname1,lastname2)):
compare(firstname1,firstname2));
}
};
}
}
来源:javaeye 作者:muscle-liu 责编:豆豆技术应用