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    责编:豆豆技术应用

正在加载评论...