Как сделать сравнение, чтобы отсортировать список по алфавиту? - PullRequest
1 голос
/ 29 мая 2010

Как мне изменить мой код так, чтобы он перечислял элементы в алфавитном порядке от a до z. Прямо сейчас это порядок от z до a. Я не могу понять это и застрял: - /

    String sName1 = ((Address)o).getSurname().toLowerCase();
    String sName2 = (this.surname).toLowerCase();
    int result = (sName1).compareTo(sName2);

    return result;

Спасибо:)

1 Ответ

5 голосов
/ 29 мая 2010

Просто поменяйте местами сравниваемые объекты.

int result = (sName2).compareTo(sName1);

Обычно для сортировки по возрастанию вы хотите, чтобы левая сторона была частью этого объекта, а правая сторона была частью другого объекта. Для сортировки по убыванию вы просто меняете обе стороны (что вы изначально и делали).

Чтобы сделать ваш код более интуитивным, я бы лучше поменял местами присваивания sName1 и sName2:

String sName1 = (this.surname).toLowerCase();
String sName2 = ((Address)o).getSurname().toLowerCase();
int result = (sName1).compareTo(sName2);

И избавьтесь от венгерской нотации и лишних скобок, а также . Следующие суммы это:

public class Address implements Comparable<Address> {
    private String surname;
    // ...

    public int compareTo(Address other) {
        return this.surname.toLowerCase().compareTo(other.surname.toLowerCase());
    }
}

Вы можете добавить нуль-проверки, если не можете гарантировать, что фамилия никогда не будет null.

Смотри также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...