Сравнимый - сравнить с методом

1

Я работал над собственным методом 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.

Теги:
methods
sorting
interface
comparable

2 ответа

2

В случае, когда две длины равны, просто верните алфавитное сравнение:

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

str1 и str2 представляют основную String ваших экземпляров LengthSortableString.

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);
}
  • 0
    Могу ли я узнать причину понижения?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню