我一直在研究自己的compareTo方法,该方法通过命令行对输入的字符串列表进行排序。该方法需要将字符串从最大到最小组织。如果多个字符串的长度相等,则按字母顺序排列。
到目前为止,我有:
public int compareTo(LengthSortableString anotherSortable) {
if (anotherSortable.getContents().length() > sortableString.length()) {
return 1;
} else if (anotherSortable.getContents().length() == sortableString.length()) {
return 0;
} else {
return -1;
}
}
现在我很好奇是否有可能按字母顺序对相等的字符串进行排序,而不必遍历相等的字符串来寻找不同值的字符。
** sortableString.getContents只返回输入的LengthSortableString的字符串类型。
答案 0 :(得分:2)
在两个长度相等的情况下,只返回按字母顺序排列的比较:
else if (/* equal lengths */) {
return str1.compareTo(str2); // i.e. using compareTo of String
}
str1
和str2
代表String
个实例的基础LengthSortableString
。
答案 1 :(得分:0)
String已实现Comparable,因此只需使用anotherSortable.getContents().compareTo(sortableString);
:
public int compareTo(LengthSortableString anotherSortable) {
int byLength = Integer.valueOf(anotherSortable.getContents().length()).compareTo(sortableString.length());
if (byLength != 0) {
return byLength;
}
return anotherSortable.getContents().compareTo(sortableString);
}