Compareble Comparator java?

178
21 января 2019, 13:40

Можно ли в методе compareTo сравнивать два поля? Попыталась сравнить то сортирует. Для чего тогда интерфейс comparator???

 @Override
        public int compareTo(A o) {
            if (this.getAge()>o.getAge())
            return 1;
            else if (this.getAge()<o.getAge())
                return -1;
            else return this.getName().compareTo(o.getName());
        }
Answer 1

Реализация интерфейса Сomparator существует отдельно от объекта, который вы сравниваете. Таким образом вы можете создать несколько разных компараторов, которые будут сравнивать объекты по-разному. Например один компаратор по полю name, другой по полю age, а третий сразу по обоим этим полям. Реализация же интерфейса Сomparable находится в самих объектах, которые вы сравниваете и выбрать какую-то другую его реализацию вы не можете. С другой стороны, если вашы объекты реализуют Сomparable, вы не обязаны использовать какие-то дополнительные компараторы для такого же сравнения.

Answer 2
  1. Да, можно сравнивать сколько угодно полей.
  2. Интерфейс Comparator используется если вам надо просто сравнить 2 одинаковых объекта, но отсортировать эти объекты надо не в стандартной последовательности. Например, по умолчанию письма могут сортировать по дате получения - для этого используется compareto. Но все остальные кастомные сортировки - лучше делать через интерфейс Comparator. Тогда их можно будет расширять бесконечно и кастомизировать.
READ ALSO
java - Поднять регистр букв у первого символа строки

java - Поднять регистр букв у первого символа строки

Собственно, суть в вопросеНапример, есть строка

181
Проверка данных на наличие в полях только цифр и знака минус

Проверка данных на наличие в полях только цифр и знака минус

Мне необходимо проверить правильность заполнения текстовых полей в созданном JFrameВ этих полях должны быть только цифры и знак минус

209
Hibernate Postgress exception Error accessing index information

Hibernate Postgress exception Error accessing index information

Сделал таблички: Магазин(Shop) Товар(Item) Табличка связи(item_x_shop)

263