Одна проблема для начала - ваш компаратор будет непоследователен, если вы дадите ему двух пациентов с нулевыми именами или двух нулевых ссылок на пациентов. В частности:
Patient p1 = null;
Patient p2 = null;
int x = comparator.compare(p1, p2);
int y = comparator.compare(p2, p1);
Знаки x
и y
должны отличаться, но оба они будут равны -1.
После этого все зависит от того, как вы хотите сравнить имена. Я бы обычно использовал
return p1_LN.compareTo(p2_LN);
, если вы хотите отсортировать по возрастанию. Обратите внимание, что для сортировки в порядке по убыванию вы не должны просто возвращать -p1_LN.compareTo(p2_LN)
, так как если сравнение возвращает Integer.MIN_VALUE, отрицание не будет работать. Вместо этого вы хотите вернуть p2_LN.compareTo(p1_LN);
.
Обратите внимание, что если вы используете эту схему, вам также не нужно звонить p1_LN.equals(p2_LN)
- это будет обработано вызовом compareTo
.