В документации Comparable
, compareTo
возвращается:
отрицательное целое число, ноль или положительное целое число, поскольку этот объект меньше, чем, равный или больший, чем указанный объект.
blockquote>Итак, если
a
меньше меньшеb
( встречается до , в естественном порядке сортировки),a.compareTo(b)
возвращает отрицательное число , но не обязательно-1
Измените
if (this.surname.compareTo(tocompare) == -1)
на
if (this.surname.compareTo(tocompare) < 0)
, и вы должны быть хорошими.
Редактировать: Примечание: Лучшим и простым способом записи этого кода является
@Override public int compareTo(Osoba o) { return this.surname.compareToIgnoreCase(tocompare.getsurname())); }
String.compareTo возвращает все целые значения int выше и ниже нуля. Поэтому ваш код должен выглядеть так:
@Override
public int compareTo(Osoba o)
{
if (!this.surname.equalsIgnoreCase(o.getSurname()))
{
return this.surname.compareToIngoreCase(o.getSurname());
}
else
{
return this.name.compareToIngoreCase(o.getName());
}
}