Java编程中怎样实现中文排序
第一种情况:
<OL>
Comparatorcmp=Collator.getInstance(java.util.Locale.CHINA);
String[]arr={"张三","李四","王五","刘六"};
Arrays.sort(arr,cmp);
for(inti=0;i<arr.length;i )
System.out.println(arr); </OL>
第二种情况:
//ComparableBean.java
importjava.text.CollationKey;
importjava.text.Collator;
importjava.text.RuleBasedCollator;
importjava.util.Comparator;
publicclassComparableBean{
privateStringname;
publicComparableBean(Stringname){
this.name=name;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}
classComparableBeanComparatorimplementsComparator//<ComparableBean>
{
RuleBasedCollatorcollator;//youcansetyourrulesfortheinstance"collator"
publicComparableBeanComparator()
{
collator=(RuleBasedCollator)Collator.getInstance(java.util.Locale.CHINA);//trytestingvariouslocales
}
publicintcompare(Objectobj1,Objectobj2){
Stringtempname1=((ComparableBean)obj1).getName();
Stringtempname2=((ComparableBean)obj2).getName();
CollationKeyc1=collator.getCollationKey(tempname1);
CollationKeyc2=collator.getCollationKey(tempname2);
//returncollator.compare(((CollationKey)c1).getSourceString(),
//((CollationKey)c2).getSourceString());
returncollator.compare(((CollationKey)c2).getSourceString(),
((CollationKey)c1).getSourceString());
}
//publicintcompare(ComparableBeanobj1,ComparableBeanobj2){
//Stringtempname1=obj1.getName();
//Stringtempname2=obj2.getName();
//
//CollationKeyc1=collator.getCollationKey(tempname1);
//CollationKeyc2=collator.getCollationKey(tempname2);
//returncollator.compare(((CollationKey)c1).getSourceString(),
//((CollationKey)c2).getSourceString());
//}
}
//theendofComparableBean.java
测试代码:
ComparableBean[]nameContent={newComparableBean("一切从实际出发"),
newComparableBean("立于不败之地"),newComparableBean("多项式"),
newComparableBean("贯彻落实"),newComparableBean("密切联系群众"),
newComparableBean("四项基本原则"),newComparableBean("咬牙切齿"),
newComparableBean("恭恭敬敬"),newComparableBean("民警"),
newComparableBean("经营承包责任制")};
Arrays.sort(nameContent,newComparableBeanComparator());
for(inti=0;i<nameContent.length;i ){
System.out.println(nameContent.getName());