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

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

Что такое компаратор в Java?

Интерфейс Java Comparator используется для упорядочивания объектов внутри определенного пользователем класса. Этот интерфейс доступен в пакете java.util и включает в себя два важных метода, известных как сравнение (Object obj1, Object obj2) и equals (Элемент Object).

Методы интерфейса Java Comparator

Есть два метода компараторов в Java, а именно:

Методы Описание
compare(Object obj1,Object obj 2) Сравнивает первый объект с другим
equals(Object obj) Сравнивает текущий объект с заданным объектом obj

Ниже приведен код использования обоих методов компаратором Java.

package JavaComparator;

import java.util.*;
import java.lang.*;
import java.io.*;

class Employee {
        int EmpID;
        String name, address;
        public Employee(int EmpID, String name, String address) {
                this.EmpID = EmpID;
                this.name = name;
                this.address = address;
        }
        public String toString() {
               return this.EmpID + " " + this.name + " " + this.address;
              }
        }
        class Sortbyroll implements Comparator<Employee> {
             public int compare(Employee a, Employee b){
                  return a.EmpID - b.EmpID;
             }
       }
       class Sortbyname implements Comparator<Employee> {
              public int compare(Employee a, Employee b) {
             return a.name.compareTo(b.name);
      }
}
class Main {
       public static void main (String[] args){
              ArrayList<Employee> Arr = new ArrayList<Employee>();
              Arr.add(new Employee(1011, "Rajesh", "Bangalore"));
              Arr.add(new Employee(1031, "Ralph", "Hyderabad"));
              Arr.add(new Employee(1201, "Karan", "Haryana"));
              System.out.println("Unsorted Data");
              for (int i=0; i<Arr.size(); i++)
                    System.out.println(Arr.get(i));
                    Collections.sort(Arr, new Sortbyroll());
                    System.out.println("nSorted data according to Employee IDs");
                    for (int i=0; i<Arr.size(); i++)
                          System.out.println(Arr.get(i));
                          Collections.sort(Arr, new Sortbyname());
                          System.out.println("nSorted data according to Employee name");
                          for (int i=0; i<Arr.size(); i++)
                                  System.out.println(Arr.get(i));
        }
}

Вывод:

Unsorted Data
1011 Rajesh Bangalore
1031 Ralph Hyderabad
1201 Karan Haryana

Sorted data according to Employee IDs
1011 Rajesh Bangalore
1031 Ralph Hyderabad
1201 Karan Haryana

Sorted data according to Employee name
1201 Karan Haryana
1011 Rajesh Bangalore
1031 Ralph Hyderabad

Давайте разберемся со вторым методом equals.

Пример Java equals():

package Equals;

public class EqualsExample {
             public static void main(String equals) {
             System.out.println(new Eqls("Harsha", 35, 12000).equals(new Eqls("Hari",25,12000)));
             System.out.println(new Eqls("Karan", 44, 45000).equals(new Eqls("Karan", 44, 45000)));
             System.out.println(new Eqls("latha", 54, 60000).equals(new Object()));
      }
      static class Eqls{
             private String name;
             private int age;
             private int Salary;
             public Eqls(String name, int age, int Salary) {
                     this.name = name;
                     this.age = age;
                     this.Salary = Salary;
             }
  @Override
      public boolean equals(Object o) {
      if (this == o) {
              return true;
      }
      if (o == null || getClass() != o.getClass()) {
              return false;
      }
      Eqls eqls= (Eqls) o;
      return age == eqls.age 
      Salary == eqls.Salary 
      name.equals(eqls.name);
      }
   }
}

Вывод:

false
true
false

Сравнение Comparator и Comparable

Comparator Comparable
Компаратор используется для сортировки атрибутов различных объектов. Интерфейс используется для сортировки объектов с естественным упорядочением.
Интерфейс компаратора сравнивает два различных предоставленных объекта класса. Сравнивает this ссылку с указанным объектом
Компаратор присутствует в java.пакет util. Находится в java.lang package.
Компаратор не влияет на исходный класс Влияет на исходный класс, т. е. фактический класс модифицируется.
Компаратор предоставляет метод compare(), equals() для сортировки элементов. предоставляет метод compareTo() для сортировки элементов.
Оцените статью