Comparable vs Comparator: разница между Comparable и Comparator

Опубликовано: 2020-12-30

Оглавление

Comparable и компаратор: обзор

Comparable и comparator — это интерфейсы в языке программирования Java для определения поведения, в котором будут реализованы классы. В то время как Comparable используется для объектов, которые упорядочены естественным образом, интерфейс Comparator реализует сортировку, принимая во внимание атрибуты объекта. Кроме того, сортировка Comparator учитывает объекты двух разных классов, а Comparable сравнивает объекты, используя ссылку «this».

Теперь, когда мы установили основной принцип работы обоих интерфейсов, давайте посмотрим на различия между ними.

Разница между Comparable и Comparator

Метод сортировки

Сопоставимые

Он использует функцию compareTo() для сортировки. Это единственный метод, присутствующий в интерфейсе сортировки Comparable.

compareTo(Object O) принимает в качестве аргумента объект и сравнивает его с другим объектом того же типа. Если объект является строкой, вы можете сравнить его только с другим объектом того же типа. То же самое и с объектом int и так далее. compareTo() возвращает отрицательное, положительное или нулевое целочисленное значение в зависимости от результата сортировки.

Компаратор

В Comparator есть два метода сортировки элементов: compare() и equals().

compare(Object O1, Object O2) принимает во внимание два аргумента в качестве входных данных и обеспечивает желаемый результат. Он возвращает целое число, чтобы указать, как первый аргумент соотносится со вторым.

  • Если O1 меньше O2, возвращается отрицательное целое число.
  • Если O1 больше, чем O2, будет возвращено положительное целое число.
  • Если O1 равно O2, возвращается 0.

equals(Object) принимает объект в качестве входных данных и сравнивает его с компаратором. Он возвращает True, если объект равен Comparator. Это также гарантирует, что порядок не изменится.

Используемый пакет

Сопоставимые

Он существует в пакете java.lang Java.

Компаратор

Он существует в пакете java.util Java.

Заказ и класс

Сопоставимые

  • Он принимает во внимание объекты, которые следуют естественному порядку, т.е. имеют тенденцию к сортировке. Например, алфавитный порядок или числовой порядок в случае имен, цены, оклада, номера списка, возраста и т. д.
  • Также важно, чтобы оба объекта относились к одному классу.
  • Интерфейс Comparable сравнивает «эту» ссылку с указанным объектом.
  • Сортировка с использованием Comparable влияет на фактический класс.

компаратор

  • Этот интерфейс используется в основном для сортировки атрибутов указанных объектов. Им не нужен естественный порядок; его можно настроить.
  • Логика сортировки требуется в отдельных классах для сравнения атрибутов объектов двух рассматриваемых классов.
  • Фактический класс остается неизменным.

Последовательности и коллекции

Сопоставимые

  • Он поддерживает только одиночные последовательности сортировки. Это означает, что вы можете рассматривать только один элемент или атрибут коллекции, такой как номер списка, возраст или ранг.
  • Для сортировки коллекции объектов, массивов или списка вы можете использовать Collection. сортировка (список) или массивы. сортировать (список). Это приведет объекты в их естественный порядок .

компаратор

  • Он поддерживает несколько последовательностей сортировки. Это означает, что вы можете учитывать несколько элементов или атрибутов коллекции, таких как номер списка, возраст и ранг.
  • Вы можете использовать collection.sort(list, comparator) для сортировки коллекции.

Вот краткое изложение всех различий между Comparable и Comparator.

Сопоставимые компаратор
Упаковка
Java.lang Java.util
Метод сортировки
сравнить с() сравнивать()
Заказ
Естественный порядок Индивидуальный заказ
Тип объекта
Сравниваемые объекты должны быть одного типа Рассматриваются объекты разных классов
Влияние на класс
Класс изменяется Не влияет на класс
Последовательность сортировки
Единая последовательность сортировки Множественная последовательность сортировки

Запишитесь на курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

О чем следует помнить при использовании Comparable и Comparator в Java

  • Сопоставимый интерфейс — это тот, который следует выбрать, если вы продаете для выполнения стандартного сравнения для определенного класса.
  • Компаратор позволяет использовать лямбда.
  • Вы можете использовать метод compareTo() для реализации как Comparator, так и Comparable.
  • Интерфейс компаратора рекомендуется, если вы ищете гибкость в сортировке

Заключение

В большинстве сценариев реальной жизни, когда мы сортируем, мы обычно имеем в виду множество параметров. Кроме того, поскольку сопоставимые результаты используются в сортировке по умолчанию и не могут быть изменены динамически, это менее практично, чем Comparator, который позволяет настраивать и выбирать различные методы сортировки в соответствии с вашими требованиями. Только по этой причине Comparator находит более практическое применение, чем Comparable.

Читать: Некоторые интересные Java-проекты для проверки

Если вам интересно узнать больше о Java и разработке полного стека, ознакомьтесь с программой Executive PG upGrad и IIIT-B по разработке программного обеспечения с полным стеком, которая предназначена для работающих профессионалов и предлагает более 500 часов интенсивного обучения, более 9 проектов, и задания, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.

Что такое интерфейсы в языках программирования?

Легко ли выучить Java?

Java представляет парадигму объектно-ориентированного программирования, позволяющую даже самым неопытным разработчикам Java думать и создавать программы, как опытный разработчик. Java произошел от языков программирования C и C++, которые также широко используются сегодня. Хотя Java имеет некоторое сходство с C и C++ с точки зрения функциональности, он превратился в гораздо более удобный язык. Поскольку объектно-ориентированное программирование упрощает поддержку и изменение существующего кода, даже начинающие программисты могут начать работать над корпоративными проектами. Новые разработчики с меньшей вероятностью столкнутся с непредвиденными ошибками во время выполнения, поскольку Java проверяется на наличие ошибок перед выполнением. Java вынуждает программистов правильно указывать все элементы кода, уменьшая вероятность ошибок по мере роста приложений.

Зачем нужна сортировка в Java?

Сортировка относится к набору методов перестановки мест элементов в массиве таким образом, чтобы все они располагались в порядке возрастания или убывания. Достойный алгоритм сортировки также должен гарантировать, что элементы с одинаковым значением остаются в отсортированном массиве в том же порядке. Сортировка необходима для глубокого понимания структур данных и алгоритмов. Java как язык программирования исключительно универсален и может использоваться для реализации ряда алгоритмов сортировки. Большинство этих алгоритмов довольно универсальны и могут быть реализованы как рекурсивно, так и итеративно.