Сопоставимое введение
Сопоставимый - это интерфейс сортировки.
Если класс реализует сопоставимый интерфейс, это означает, что «этот класс поддерживает сортировку». Поскольку классы, которые реализуют сортируемое сортировку поддержки интерфейса, предполагая, что в настоящее время существует «список списков (или массив) объектов классов, которые реализуют сопоставимый интерфейс», список списков (или массив) может быть отсортирован с помощью collections.sort (или arrays.sort).
Кроме того, «объект класса, который реализует сопоставимый интерфейс», может использоваться в качестве ключа в «упорядоченной карте (такой как treemap)» или элемент в «упорядоченном наборе (деревьях)» без указания компаратора.
1. Кораптор и сопоставимый одинаковы
Все они являются Java Interfaces и используются для сравнения размеров пользовательских классов.
Что такое пользовательский класс: например, Public Class Person {String name; int age}.
Когда у нас есть такой человек, который содержит Person1, Person2, Person3 ...... мы используем collections.sort (personlist),
Ожидаемый результат не получен. Кто -то должен спросить в это время, почему мы можем сортировать список строк:
Например, Stringlist {"hello1", "hello3", "hello2"}, collections.sort (Stringlist) может получить правильную сортировку, это потому, что
Объект String помог нам реализовать сопоставимый интерфейс, поэтому, если наш человек хочет сортировать, нам также необходимо реализовать компаратор.
2. Разница между компаратором и сопоставимым
Сопоставимо
Сопоставимо определено внутри класса человека:
Первая личность открытого класса реализует сопоставимые {..compare размер человека ...},
Поскольку компаратор был реализован, наш человек теперь является объектом, который может сравнивать размеры. Его функция сравнения точно такая же, как строка, и ее можно сравнить в любое время и в любом месте, потому что у человека теперь есть другой размер. Collections.Sort (PersonList) может получить правильный результат.
Компаратор
Кораптор определяется вне человека. В настоящее время структура нашего личности не нужно менять никаких изменений, таких как
Public Class Person {String name; int age},Затем мы определяем другого компаратора:
Public PersonComparator реализует компаратор () {..compare размер человека ...}, Как сравнить размеры двух человек в PersonCoparator. Итак, используя этот метод, когда мы хотим сортировать личный список,
В дополнение к прохождению Personlist, нам также необходимо пройти PersonComparator, потому что как сравнить размер человека в PersonComparator
Реализовано, например:
Collections.sort (PersonList, New PersonComparator ()).
3. Примеры компаратора и сопоставимого
Сравнимо:
Чтобы реализовать сопоставимый интерфейс, вы должны переопределить метод сравнения. Реализовать сравнение в методе сравнения:
Открытый класс лиц реализует сопоставимо {String name; int age; public int compareto (человек другой) {int i = 0; i = name.compareto (sheric.name); // Сравнение с использованием строк if (i == 0) {// Если имена одинаковы, сравните возраст, возраст возврата возраста - другой. // имена разные, верните результат сравнения имен.}}}В настоящее время мы можем напрямую сортировать его с помощью Collections.sort (PersonList).
Компаратор:
Реализация компаратора требует переоценки метода сравнения:
открытый класс Person {string name; int age;} класс PersonComparator реализует компаратор <person> {public int compare (человек один, человек другой) {int i = 0; i = one.name.compareto (другой. name); // Сравнение с использованием строк if (i == 0) {// Если имя одинаково, сравните возраст, верните результат сравнения возраста return one.age - shriend.age;} else {return i; // Имена отличаются, верните результат сравнения имен.}}} Collections.sort (PersonList, New PersonComparator ()). Это может быть отсортировано4: Резюме
Оба метода имеют свои преимущества и недостатки. Это просто использовать сопоставимо. Пока объект, который реализует сопоставимый интерфейс, становится сопоставимым объектом,
Однако исходный код должен быть изменен. Преимущество использования компаратора заключается в том, что ему не нужно изменять исходный код, но также реализует компаратор. Когда необходимо сравнивать пользовательский объект, компаратора и объекта могут быть переданы вместе, чтобы сравнить размер. В компараторе пользователи могут самостоятельно реализовать сложную и общую логику, чтобы они могли соответствовать некоторым относительно простым объектам, которые могут сэкономить много повторяющихся рабочей силы.