Что сопоставимо в Java?
Comparable в Java - это объект для сравнения себя с другим объектом. Это помогает отсортировать список настраиваемых объектов. Интерфейс java.lang.Comparable должен быть реализован классом для сравнения его экземпляров. Массив объектов, реализующих сопоставимый интерфейс, автоматически сортируется методами Arrays.sort и Collections.sort.
В этом руководстве Comparator vs Comparable in Java вы узнаете:
- Что сопоставимо в Java?
- Что такое компаратор в Java?
- Метод, используемый в Comparable:
- Метод, используемый в компараторе:
- Разница между Comparable и Comparator в Java
- Лучшие практики при использовании Comparator и Comparable в Java
Что такое компаратор в Java?
Компаратор в Java - это объект для сравнения разных объектов разных классов. Интерфейс компаратора в Java также используется для упорядочивания объектов пользовательских классов. Он включает два важных метода интерфейса компаратора, известных как compare (Object obj1, Object obj2) и equals (элемент Object).
КЛЮЧЕВЫЕ ОТЛИЧИЯ:
- Comparable предоставляет метод compareTo () для сортировки элементов в Java, тогда как Comparator предоставляет метод compare () для сортировки элементов в Java.
- Сопоставимый интерфейс присутствует в пакете java.lang, тогда как интерфейс Comparator присутствует в пакете java.util.
- Comparable обеспечивает единую последовательность сортировки, в то время как Comparator предоставляет несколько последовательностей сортировки.
- Comparable влияет на исходный класс, тогда как компаратор не влияет на исходный класс.
Метод, используемый в Comparable:
Ниже приводится важный метод, используемый в интерфейсе Comparable:
Сравнить с():
Метод CompareTo () используется для выполнения естественной сортировки по строке. Значение естественной сортировки - это порядок сортировки, который применяется к объекту, например числовой порядок для сортировки целых чисел, алфавитный порядок для String и т. Д.
Синтаксис метода CompareTo () следующий:
int compareTo(T obj)
В приведенном выше синтаксисе T обозначает тип объектов, которые вы собираетесь сравнивать.
Метод CompareTo () сравнивает объект с объектом T obj.
Выход:
- Он возвращает 0, если значения равны.
- В случае, если объект имеет меньшее значение, этот метод возвращает отрицательное значение.
- Если объект имеет более высокое значение, он возвращает положительное значение.
Пример метода CompareTo ():
Следующая программа сопоставимого примера Java показывает сравнение двух символов, «a» и «b». Буква «a» идет перед буквой «b» в алфавитном порядке.
Следовательно, на выходе будет -1. Буква «b» идет после «a» в алфавитном порядке. Следовательно, на выходе будет 1. Символы «a» и «b» эквивалентны. Следовательно, выход равен 0.
public class Sample_String {public static void main(String[] args) {String str_Sample = "a";System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));str_Sample = "b";System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));str_Sample = "b";System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));}}
Выход
Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Метод, используемый в компараторе:
Ниже приведены важные методы, используемые в интерфейсе компаратора:
Сравнивать():
Compare () позволяет вам заказывать объекты. Для этого вам необходимо создать класс, реализующий интерфейс компаратора. После этого вам нужно переопределить метод сравнения.
Синтаксис метода compare () следующий:
compare(Object obj1, Object obj2)
В приведенном выше синтаксисе obj1 и obj2 - это два объекта, которые нужно сравнивать с помощью метода compare ().
Выход:
- Он возвращает отрицательное целое число, если первый аргумент меньше второго.
- Возвращает ноль, если первый аргумент и второй аргумент равны.
- Этот метод может возвращать положительное целое число, если первый аргумент больше второго.
Вы должны убедиться, что отношение транзитивное. Например, ((compare (a, b)> 0) && (compare (b, c)> 0)), что подразумевает compare (a, c)> 0.
Пример метода сравнения:
В приведенной ниже программе примера компаратора Java есть 6 переменных. «x», «y», «p», «q», «r» и «s». На выходе будет -1, так как значение «x», 20 меньше, чем значение «y», 30. Выходное значение - 0, потому что значение «p», 40 равно значению «q», 40. .
import java.lang.Integer;public class example {public static void main(String args[]){int x = 20;int y = 30;// as 10 less than 20,// Output will be a value less than zeroSystem.out.println(Integer.compare(x, y));int p = 40;int q = 40;// as 30 equals 30,// Output will be zeroSystem.out.println(Integer.compare(p, q));int r = 20;int s = 7;// as 15 is greater than 8,// Output will be a value greater than zeroSystem.out.println(Integer.compare(r, s));}}
Выход:
-101
Равно ():
Equals () проверяет, равен ли числовой объект объекту, который передается в качестве аргумента, или нет.
Синтаксис метода equals () следующий:
публичное логическое равенство (объект o)
Этот метод принимает два параметра: 1) любой объект 2) возвращаемое значение. Он возвращает истину, если переданный аргумент не равен нулю и является объектом аналогичного типа, имеющим такое же числовое значение.
Пример метода Equals:
В приведенном ниже примере мы сравниваем четыре переменные друг с другом. Три переменные относятся к целочисленному типу, а одна - к короткому. Первый результат неверен, поскольку значение p, равное 5, не равно значению q, равному 20.
Второй результат верен, потому что значения переменных p и r одинаковы, то есть 5. Наконец, результат ложный, поскольку переменные p и s имеют разные присвоенные значения.
public class Test {public static void main(String args[]) {Integer p = 5;Integer q = 20;Integer r =5;Short s = 5;System.out.println(p.equals(q));System.out.println(p.equals(r));System.out.println(p.equals(s));}}
Выход
falsetruefalse
Разница между Comparable и Comparator в Java
Вот основные различия между Java Comparable и Comparator:
Сопоставимый | Компаратор |
Comparable предоставляет метод compareTo () для сортировки элементов в Java. | Comparator предоставляет метод compare () для сортировки элементов в Java. |
Сопоставимый интерфейс присутствует в пакете java.lang. | Интерфейс компаратора присутствует в пакете java.util. |
Логика сортировки должна быть в том же классе, чей объект вы собираетесь сортировать. | Логика сортировки должна быть в отдельном классе, чтобы писать разные сортировки на основе разных атрибутов объектов. |
Класс, объекты которого вы хотите отсортировать, должен реализовывать сопоставимый интерфейс. | Класс, объекты которого вы хотите отсортировать, не должен реализовывать интерфейс компаратора. |
Он обеспечивает одиночные последовательности сортировки. | Он обеспечивает несколько последовательностей сортировки. |
Этот метод позволяет сортировать данные в соответствии с естественным порядком сортировки. | Этот метод сортирует данные в соответствии с индивидуальным порядком сортировки. |
Это влияет на исходный класс. т. е. изменен фактический класс. | Это не влияет на исходный класс, т.е. фактический класс не изменяется. |
Часто реализуется в API : Calendar, Wrapper classes, Date и String. | Реализовано для сортировки экземпляров сторонних классов. |
Все классы-оболочки и класс String реализуют сопоставимый интерфейс. | Единственные реализованные классы Comparator - Collator и RuleBasedColator. |
Лучшие практики при использовании Comparator и Comparable в Java
- Используйте сопоставимый интерфейс, если сравнение является стандартным для конкретного класса.
- Вы можете использовать лямбды с компаратором.
- Многие базовые классы, доступные в, реализуют сопоставимый интерфейс.
- Можно использовать TreeSet и TreeMap или при сортировке Set или Map.
- Метод compareTo () работает как с компаратором, так и с сопоставимым.
- Используйте интерфейс компаратора только тогда, когда вам <требуется большая гибкость.
- Метод compareTo () вернет положительное целое число, если первый объект больше другого, отрицательное, если оно меньше, и ноль, если оба объекта одинаковы.