Просто поменяйте местами сравниваемые объекты.
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
.
Смотри также: