Что такое интерфейс компаратора в Java с примерами?
Интерфейс Comparator содержит методы compare() и equals(). Первый метод используется для вычисления двух объектов путем возврата целочисленного значения. Другой метод используется для вычисления двух объектов сравнения на равенство.
Вот различные примеры использования интерфейса Comparator в Java:
Пример 1. Сортировка списка по длине
В этом примере рассматривается список строк и сортируются они по длине, а не по алфавиту:
Импортировать java.util.ArrayList ;
Импортировать java.util.Коллекции ;
Импортировать java.util. Компаратор ;
Импортировать java.util.List ;
публичный сорт Основной {
публичный статический пустота основной ( Нить [ ] аргументы ) {
Список < Нить > список '=' новый ArrayList <> ( ) ;
список. добавлять ( 'Джон' ) ;
список. добавлять ( 'Боб' ) ;
список. добавлять ( 'Алиса' ) ;
Коллекции . Сортировать ( список ) ;
Система . вне . печать ( список ) ;
Коллекции . Сортировать ( список, новый StringLengthComparator ( ) ) ;
Система . вне . печать ( список ) ;
}
} // Класс определен
сорт StringLengthComparator реализует Компаратор < Нить > {
публичный инт сравнивать ( Нить с1, Нить с2 ) {
возвращаться Целое число . сравнивать ( с1. длина ( ) , с2. длина ( ) ) ;
}
}
Описание приведенного выше кода приведено ниже:
- Сначала создайте собственный класс Comparator с именем StringLengthComparator, который реализует интерфейс Comparator
. - Он переопределяет метод compare() для сравнения длины двух строк.
- В конце передайте экземпляр методу .sort() для сортировки списка с помощью нашего пользовательского компаратора.
Выход
Первый вывод — это результат сортировки списка с использованием естественного порядка, а второй результат — результат сортировки списка с использованием нашего пользовательского компаратора на основе длины каждой строки.
Пример 2. Сортировка объектов по определенному полю
Другой пример проводится для сортировки объектов по определенному полю. Для этого используется интерфейс Comparator:
Импортировать java.util.ArrayList ;Импортировать java.util.Коллекции ;
Импортировать java.util. Компаратор ;
Импортировать java.util.List ;
публичный сорт Основной {
публичный статический пустота основной ( Нить [ ] аргументы ) {
Список < Человек > лица '=' новый ArrayList <> ( ) ; // Назначаем имя, возраст и зарплату
лиц. добавлять ( новый Человек ( 'Алиса' , 25 , 50000 ) ) ;
лиц. добавлять ( новый Человек ( 'Боб' , 30 , 75000 ) ) ;
лиц. добавлять ( новый Человек ( 'Чарли' , двадцать , 40000 ) ) ;
Компаратор < Человек > зарплатаКомпаратор '=' новый Компаратор < Человек > ( ) {
// Сортируем людей по зарплате
публичный инт сравнивать ( Человек p1, Человек p2 ) {
возвращаться Целое число . сравнивать ( р2. получитьЗарплата ( ) , стр1. получитьЗарплата ( ) ) ;
}
} ;
Коллекции . Сортировать ( человек, зарплатаComparator ) ; возвращаться сортировать значения
// Распечатать отсортированный список лиц
для ( человек человек : лица ) {
Система . вне . печать ( человек ) ;
}
}
}
сорт Человек { // Определяем имя, возраст и зарплату
частный Нить имя ; // область внутри класса
частный инт возраст ;
частный инт зарплата ;
публичный Человек ( Нить имя, инт возраст, инт зарплата ) {
этот . имя '=' имя ;
этот . возраст '=' возраст ;
этот . зарплата '=' зарплата ;
}
публичный Нить получить имя ( ) {
возвращаться имя ;
}
публичный инт getAge ( ) {
возвращаться возраст ;
}
публичный инт получитьЗарплата ( ) {
возвращаться зарплата ;
}
публичный Нить нанизывать ( ) {
возвращаться имя + ' (возраст ' + возраст + ', зарплата $' + зарплата + ')' ;
}
}
Описание кода приведено ниже:
- Класс под названием « Человек ” с тремя полями: “ имя », « возраст ', и ' зарплата ' Считается.
- После этого отсортируйте коллекцию объектов Person в зависимости от их зарплаты в порядке убывания.
Выход
Вывод показывает, что зарплаты отсортированы по убыванию.
Заключение
В Java интерфейс Comparator — это мощный инструмент, который позволяет пользователям сортировать объекты на основе пользовательских критериев. Он переопределяет метод compare(), пользователи могут определить свою собственную функцию сравнения и использовать ее для сортировки коллекций объектов различными способами. В этой статье объясняется интерфейс Comparator вместе с практическими примерами на Java.