【问题标题】:Comparable- compareTo methodComparable- compareTo 方法
【发布时间】:2023-03-21 15:54:01
【问题描述】:

我一直在研究自己的 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 的字符串类型。

【问题讨论】:

    标签: java sorting methods interface comparable


    【解决方案1】:

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

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

    str1str2 代表您的 LengthSortableString 实例的底层 Strings。

    【讨论】:

      【解决方案2】:

      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);
      }
      

      【讨论】: