【发布时间】:2016-01-04 17:50:09
【问题描述】:
我有字符串列表。名单如下
ABC, DAY 1/2, DAY 1/1, DAY 1/16, DAY 1/2, day 1/1, day 1/52, day 1/32.
如何使用比较器对这个字符串列表进行排序并按以下方式对其进行排序
ABC, DAY 1/1, DAY 1/2, DAY 1/16, day 1/1, day 1/32, day 1/52
因此,大写单词应该放在第一位,并且应该通过考虑以降序 1/1、1/2、1/16 等顺序连接的数字进行排序。
我尝试了以下代码。我首先使用集合的默认排序方法对其进行排序。它以大写在前,小写在后进行排序,然后我尝试了自定义代码,但无法按降序排序。
Collections.sort(list);
Collections.sort(list, new Comparator<String> (){
public int compare(String s1, String s2){
if(s1.toUpperCase().contains("DAY") && s2.toUpperCase().contains("DAY")
&& !s1.equalsIgnoreCase("DAY") && !s2.equalsIgnoreCase("DAY")){
try{
Integer i1 = Integer.valueOf(s1.split("\\/")[1]);
Integer i2 = Integer.valueOf(s2.split("\\/")[1]);
System.out.println(" s1 " + s1 +" and s2 "+ s2 +" compare --> "+s1.compareTo(s2));
if(s1.compareTo(s2) > 0){
return 1;
}else if(s1.compareTo(s2) < 0){
if(i1 > i2){
return 1;
}else{
return 0;
}
}else{
return 0;
}
}catch(Exception e){
return s1.compareTo(s2);
}
}else{
System.out.println("In else--");
return 0;
}
}
});
【问题讨论】:
-
我建议您查看一些示例(examples.javacodegeeks.com/core-java/util/comparator/…,mkyong.com/java/…,...)并自己尝试。如果您对代码出了什么问题有具体问题,请发布。
-
我可以在这里使用整理器吗?但我对它不是很熟悉。
标签: java collections