我正在尝试读取文件,并比较字符串长度。如果两个字符串长度相同,那么我想按自然排序顺序(按字母顺序)对它们进行排序。
这是我正在研究的比较器的片段。一切都是完整的,减去排序相同长度的字符串。
Collections.sort(s, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});
感谢任何输入或adivce
答案 0 :(得分:7)
在比较方法中添加一个if else块。
伪代码:
if lengths are not equal
return o1's length compared to o2's length.
else
return o1 compared to o2.
我认为你可以弄清楚其余部分。
答案 1 :(得分:1)
因此,就实际代码而言,它将类似于:
Collections.sort(strList, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int returnVal = 0;
//handle nulls, there's some sample logic:
if(o1 == null && o2 == null){
returnVal = 0;
} else
if(o1 == null && o2 != null){
returnVal = 1;
} else
if(o1 != null && o2 == null){
returnVal = -1;
} else {
//sort by length
returnVal = ((Integer)o1.length()).compareTo((Integer)o2.length());
//if equal length, sort by string
if(returnVal == 0){
returnVal = o1.compareTo(o2);
}
}
return returnVal;
}
});
我还添加了空检查的逻辑,并将它们移动到排序列表的末尾。可能有不同的工具已经执行此操作,您可以调用它。
另请注意,如果您希望字符串比较忽略大小写,请改用String.compareToIgnoreCase()方法。