Что такое интерфейс компаратора в Java с примерами?

Cto Takoe Interfejs Komparatora V Java S Primerami



В Java интерфейс Comparator используется для определения функции сравнения, которую можно использовать для сортировки набора объектов. Это позволяет сортировать объекты на основе пользовательских критериев, а не сравнения по умолчанию на основе естественного порядка. Он имеет различные приложения для настройки функций в соответствии с потребностями. В этой статье объясняется интерфейс Comparator вместе с многочисленными примерами на Java.

Что такое интерфейс компаратора в 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.