我有一个这样的字符串列表:[8 ****,7 ****,73 ***,**** 1,** 101,* 4101、12010等]
我想按以下2条规则进行排序。
因此最终数组应变为:[7 ****,8 ****,73 ***,320 **,**** 1,** 101、12101]
我创建了一个自定义比较器,并分别获取每个字符:
public class MyCustomComparator implements Comparator<ObjToCompare> {
@Override
public int compare(ObjToCompare o1, ObjToCompare o2) {
String lastSubstr1 = o1.getMyString.substring(o1.getMyString.length()-1);
String lastSubstr2 = o2.getMyString.substring(o2.getMyString.length()-1);
String secondFromLastSubstr1 =o1.getMyString.substring(o1.getMyString.length()-2,o1.getMyString().length()-1);
String secondFromLastSubstr2 =o2.getMyString.substring(o2.getMyString.length()-2,o2.getMyString().length()-1);
String thirdFromLastSubstr1 = o1.getMyString.substring(o1.getMyString.length()-3,o1.getMyString().length()-2);
String thirdFromLastSubstr2 = o2.getMyString.substring(o2.getMyString.length()-3,o2.getMyString().length()-2);
String fourthFromLastSubstr1 = o1.getMyString.substring(o1.getMyString.length()-4,o1.getMyString().length()-3);
String fourthFromLastSubstr2 = o2.getMyString.substring(o2.getMyString.length()-4,o2.getMyString().length()-3);
String fifthFromLastSubstr1 = o1.getMyString.substring(o1.getMyString.length()-5,o1.getMyString().length()-4);
String fifthFromLastSubstr2 = o2.getMyString.substring(o2.getMyString.length()-5,o2.getMyString().length()-4);
int last = lastSubstr1.compareTo(lastSubstr2);
return lastSubstr1.compareTo(lastSubstr2);
}}
如何实现以上逻辑?提前非常感谢您。
这是我的操作方式:创建两个String
s(两个规则)。每个都String
按规则设置的顺序保存字符。例如:
String rule1Order = "*1234567890";
现在,字符串中字符的索引可以视为数字顺序值。索引之间的差异是期望的compareTo
结果:
int lastSubstr1Ordervalue = rule1Order.indexOf(lastSubstr1);
int lastSubstr2Ordervalue = rule1Order.indexOf(lastSubstr2);
int lastSubstrCompareTo = lastSubstr1Ordervalue - lastSubstr2Ordervalue;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句