繁体   English   中英

可比-compareTo方法

[英]Comparable- compareTo method

我一直在研究自己的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;
    }
}

现在我很好奇,是否有可能按字母顺序对相等的字符串进行排序,而不必遍历相等的字符串以查找不同值的char。

** sortableString.getContents仅返回输入的LengthSortableString的字符串类型。

在两个长度相等的情况下,只需返回字母比较:

else if (/* equal lengths */) {
    return str1.compareTo(str2);  // i.e. using compareTo of String
}

str1str2代表LengthSortableString实例的基础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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM