Java基础-Comparetor比较器之String数组

(#)已知数组 String strsort[10],取值分别为:“1”、“3”、“2”、“1-1”、“1-2”、“4”、
“3-1”、“1-1-1”、“3-1-1”、“1-2-1-1”.
请编写一段代码:
1) 实现数组 strsort[10]按如下所示排序:
1、1-1、1-1-1、1-2、1-2-1-1、2、3、3-1、3-1-1、4
2)实现数组按如下所示排序

1、2、3、4、1-1、1-2、3-1、1-1-1、3-1-1、1-2-1-1


--1:直接使用Arrays.sort()排序,按字典排序

                String[] s = new String[]{"1","3","2","1-1","1-2","4","3-1","1-1-1","3-1-1","1-2-1-1"};

Arrays.sort(s);
for(int i = 0; i < s.length; i++){
System.out.print(s[i] + "  ");
}

打印结果为:



--2:使用java比较器Comparetor(外部比较器)

先比较长度,再比较大小

public class SortString implements Comparator<String>{


@Override
public int compare(String o1, String o2) {
//两个String 每个String表示数组中的元素  
// 1: 由低到高      -1:由高到低
String[] s1 = o1.split("-");
String[] s2 = o2.split("-");
if(s1.length == 1 && s2.length ==1){
if(s1[0].compareTo(s2[0]) > 0){ // s1[0]>s2[0]
return 1;
}else if(s1[0].compareTo(s2[0]) < 0){// s1[0]<s2[0]
return -1;
}
}else if(s1.length < s2.length){
return -1;
}else if(s1.length > s2.length){
return 1;
}
return 0;
}
}

然后调用:Arrays.sort(str,new SortString());// str为原数组

                   System.out.println(Arrays.toString(s));

打印结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值