62,614
社区成员
发帖
与我相关
我的任务
分享
public int sortRule(String str1,String str2){
str1=str1.replaceAll("(\\D+)","@$1@");
str1=("@".equals(str1.substring(0,1)))?str1.substring(1,str1.length()):str1;
str1=("@".equals(str1.substring(str1.length()-1,str1.length())))?str1.substring(0,str1.length()-1):str1;
String[] num1=str1.split("@");
str2=str2.replaceAll("(\\D+)","@$1@");
str2=("@".equals(str2.substring(0,1)))?str2.substring(1,str2.length()):str2;
str2=("@".equals(str2.substring(str2.length()-1,str2.length())))?str2.substring(0,str2.length()-1):str2;
String[] num2=str2.split("@");
int count=(num1.length-num2.length<0)?num1.length:num2.length;
int n=0;
int i=0;
int res=0;
do{
Pattern p=Pattern.compile("[0-9]{1,}");
Matcher m1=p.matcher(num1[i]);
boolean bl1=m1.matches();
Matcher m2=p.matcher(num2[i]);
boolean bl2=m2.matches();
if(bl1==true&&bl2==true){
int n1=Integer.parseInt(num1[i]);
int n2=Integer.parseInt(num2[i]);
n=n1-n2;
}else{
n=num1[i].compareTo(num2[i]);
}
if(n==0){
if(i==count-1){
if(num1.length<num2.length){
res=-1;
}else if(num1.length>num2.length){
res=1;
}else{
res=0;
}
}
}else{
res=n;
}
i++;
}while(n==0&&i<=count-1);
return res;
}
String str1="12-a-33",str2="5-b",str3="a-5-b",str4="12-a-c",str5="12-b-7";
//由于TreeSet默认的是从小到大的,所以我们用一个Comparator给他倒序下
TreeSet<String> set=new TreeSet<String>(new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
return -o1.compareTo(o2);
}
});
set.add(str1);
set.add(str2);
set.add(str3);
set.add(str4);
set.add(str5);
System.out.println(set);