Преглед на сравнимото в пример на Java

Сравним в Java е интерференция, използвана за сравняване на текущи обекти с други обекти от същия тип. Това сравнение може да се използва за сортиране на елементи в колекция. Ще трябва да внедрите интерфейс в клас, за да го направите сортируем или „съпоставим“. Ще трябва да приложите само един метод “сравнениеТо”. Това подреждане от всякакъв тип се нарича естествено подреждане, а реализираният метод “сравнениеТо” се нарича естествен метод за сравнение. Тук, в тази сравнима статия в пример за Java, ще разгледаме различните примери за сравнително в Java.

Декларация:

Интерфейс Сравним

За да внедрите този интерфейс, трябва да внедрите този метод:

public int compareTo(To);

Параметри:

T - е видът на обекта, с който се сравнява този обект.

Стойност на връщане:

Методът сравнениеTo връща 0, ако обектът е определен и този обект са равни, връща отрицателно цяло число, ако този обект е по-малък от посочения обект, и връща положително цяло число, ако този обект е по-голям от посочения обект.

Хвърля:

ClasscastException - Ако обектът, предаден на този метод, е нулев

NullPointerException - Ако обектът, предаден на този метод, не е съвместим с този обект.

Класовете, които прилагат Сравним интерфейс, имат естествения си ред, посочен с тях, така че те могат да бъдат сортирани директно в Collection или масиви, използвайки Collections.sort () и Arrays.sort (). Също така, те могат да се използват като ключ в сортирани карти и елементи в сортирани набори, без да се посочва отделно Comparator.

Нека разберем Сравним интерфейс с помощта на пример:

Пример:

package comparableDemo;
import java.util.TreeSet;
public class Student implements Comparable (
private int rollNo;
private String name;
private int age;
public Student(int rollNo, String name, int age) (
this.rollNo = rollNo;
this.name = name;
this.age = age;
)
@Override
public int compareTo(Student o) (
if (this.rollNo > o.rollNo) (
return 1;
) else if (this.rollNo == o.rollNo) (
return 0;
) else (
return -1;
)
)
@Override
public String toString() (
return "RollNo-" + this.rollNo + ", Name-" + this.name + ", Age-" + this.age;
)
public static void main(String() args) (
TreeSet students = new TreeSet();
Student student1 = new Student(3, "Raj", 20);
Student student2 = new Student(5, "Shyam", 18);
Student student3 = new Student(1, "Ram", 19);
Student student4 = new Student(4, "Sunil", 25);
Student student5 = new Student(2, "Ajay", 26);
students.add(student1);
students.add(student2);
students.add(student3);
students.add(student4);
students.add(student5);
for (Student student : students) (
System.out.println(student);
)
)
)

изход:

обяснение

Това е приложение за съхранение на подробности за учениците.

  • Първо, ние създадохме клас „Студент“ като представителство на субекта Студент. Ще съхраняваме основни детайли като номер на ролка, име и възраст на учениците.
  • И изискването е да сортирате списъка на учениците въз основа на броя на ролката.
  • За да се изпълни това изискване, се прилага Сравним интерфейс и се сравнява с учениците на базата на номер на ролката, тъй като можете да видите прилагането на метода “сравнениеТо”.
  • Тогава имаме основния метод за показване на функционалността. Тук създадохме „TreeSet“ и добавихме петима ученици с произволни номера на ролки. Използвали сме „TreeSet“, защото съхранява елементи в подреден ред.
  • Сега, ако повторите списъка със студенти, ще откриете, че студентите са сортирани въз основа на номера на ролката. Това беше нашето изискване!
  • Бихме могли да сортираме и учениците въз основа на други атрибути като име или възраст. За да направим това, ще трябва да използваме имена или възрастови променливи в метода „сравнениеTo“ вместо „rollNo“.

Пример:

@Override
public int compareTo(Student o) (
if (this.age> o.age) (
return 1;
) else if (this.age == o.age) (
return 0;
) else (
return -1;
)
)
OR
@Override
public int compareTo(Student o) (
return this.name.compareTo(o.name);
)

Сравним с сравнение

Comparator е също интерфейс като Comparable, който се използва за сравняване на два обекта от даден тип. Разликата е, че Comparator не се реализира в самия клас на образувание. Трябва да го внедрим в друг клас и да предоставим изрично случая на механизма за сортиране. За тази цел можем да използваме и анонимен екземпляр от клас.

Например, да предположим, че имаме клас Student без да прилагаме съпоставим интерфейс:

package comparableDemo;
import java.util.TreeSet;
public class Student(
private int rollNo;
private String name;
private int age;
public Student(int rollNo, String name, int age) (
this.rollNo = rollNo;
this.name = name;
this.age = age;
)
@Override
public String toString() (
return "RollNo-" + this.rollNo + ", Name-" + this.name + ", Age-" + this.age;
)
public static void main(String() args) (
TreeSet students = new TreeSet();
Student student1 = new Student(3, "Raj", 20);
Student student2 = new Student(5, "Shyam", 18);
Student student3 = new Student(1, "Ram", 19);
Student student4 = new Student(4, "Sunil", 25);
Student student5 = new Student(2, "Ajay", 26);
students.add(student1);
students.add(student2);
students.add(student3);
students.add(student4);
students.add(student5);
for (Student student : students) (
System.out.println(student);
)
)
)

Ако се опитате да изпълните тази програма, ще получите това изключение:

Тъй като TreeSet се нуждае от начин за сортиране на елементите.

За да разрешим тази грешка, можем да използваме сравнител, както е реализиран в тази програма:

package comparableDemo;
import java.util.Comparator;
import java.util.TreeSet;
public class Student (
private int rollNo;
private String name;
private int age;
public Student(int rollNo, String name, int age) (
this.rollNo = rollNo;
this.name = name;
this.age = age;
)
@Override
public String toString() (
return "RollNo-" + this.rollNo + ", Name-" + this.name + ", Age-" + this.age;
)
public static void main(String() args) (
Comparator studentComparator = new Comparator() (
@Override
public int compare(Student o1, Student o2) (
if (o1.rollNo < o2.rollNo) (
return -1;
) else if (o1.rollNo == o2.rollNo) (
return 0;
) else (
return 1;
)
)
);
TreeSet students = new TreeSet(studentComparator);
Student student1 = new Student(3, "Raj", 20);
Student student2 = new Student(5, "Shyam", 18);
Student student3 = new Student(1, "Ram", 19);
Student student4 = new Student(4, "Sunil", 25);
Student student5 = new Student(2, "Ajay", 26);
students.add(student1);
students.add(student2);
students.add(student3);
students.add(student4);
students.add(student5);
for (Student student : students) (
System.out.println(student);
)
)
)

Можете да видите, че интерфейсът на Comparator е реализиран в анонимен вътрешен клас и екземпляр е предоставен на TreeSet за сортиране на елементи. Сега ще получите подходящ резултат както по-рано.

Интерфейс за колекция в Java

Колекцията е корен интерфейс в рамките на колекциите. Той съдържа декларацията за всички методи с общо предназначение, които се реализират в колекции като списъци и набори. Интерфейсът на картата не разширява интерфейса на Collection, тъй като Map е съвкупност от двойки ключ-стойност, а не просто колекция от елементи. Някои от методите за интерфейс на Collection са реализирани в абстрактен клас „AbstractCollection“.

Този интерфейс не се осъществява директно, а се разширява от специфични интерфейси, тъй като прилагането на тези методи е специфично за събиране. Например, някаква колекция позволява дублиращи се елементи (Ex-List), докато някои не (Ex-Set), някои поддържат индексиране (Ex-List), докато други не (Ex-Set).

Тук са описани някои важни методи:

  1. Булева добавка (E e): Този метод добавя елемент към тази колекция и връща състоянието на операцията за добавяне.
  2. boolean addAll (Колекция c): Този метод добавя всички елементи от определената колекция в тази колекция и връща състоянието на операцията за добавяне.
  3. void clear (): Този метод премахва всички елементи от тази колекция.
  4. boolean съдържа (Object o): Този метод проверява дали посоченият елемент присъства в колекцията или не. Връща съответно вярно или невярно.
  5. boolean съдържа (Колекция в): Този метод проверява дали всички елементи от определената колекция присъстват в тази колекция или не и връща съответно вярно или невярно.
  6. boolean isEmpty (): Този метод проверява дали колекцията е празна или не и съответно връща true или false.
  7. Итератор итератор (): Този метод връща итератора за тази колекция. Iterator се използва за итерация през всички елементи в тази колекция.
  8. boolean remove (Object o): Този метод премахва посочения елемент от колекцията и връща състоянието на операция за премахване.
  9. boolean removeAll (Колекция c): Този метод премахва всички елементи от тази колекция, които присъстват в определената колекция и тази колекция.
  10. boolean retainAll (Колекция c): Този метод премахва всички елементи от тази колекция, които не присъстват в определената колекция и присъстват в тази колекция.
  11. int size (): Този метод връща размера на тази колекция.
  12. Object () toArray (): Това е важен метод, който формира и връща масива, съдържащ всички елементи от тази колекция.
  13. T () toArray (T () a): Този метод добавя всички елементи от тази колекция в определен масив и връща масива. Ако размерът на масива е по-малък от размера на тази колекция, тогава той създава нов масив от типове, същият като типа на зададения масив и го връща. Ако размерът на зададения масив е по-голям от размера на тази колекция, нулевата стойност се задава за останалите елементи в масива и връща масива.

Заключение - Сравнимо в Java Примера

За да обобщим, интерфейсът Comparable в Java е много полезен за сравняване на обекти ръчно, сортиране на колекции и масиви или за сортиране на самата колекция. Можем също да сортираме елементи въз основа на различни атрибути на субекта. Не е задължително, но силно препоръчително е да имате същия резултат от равни и метода “сравнениеТо”, за да избегнете бъркотията в колекция, която използва и двата метода.

Препоръчителни статии

Това е ръководство за сравнимо в Java Example. Тук обсъждаме Въведение, Сравнимо в Примера на Java, Интерфейс за колекция в Java и др. Можете също да прегледате и другите ни предложени статии, за да научите повече -

  1. Сортиране в Java
  2. Най-добър Java IDE
  3. Поредици в Python
  4. Oracle струнни функции
  5. Пълно ръководство за сортиране в C # с примери
  6. PL / SQL колекции | Синтаксис, типове, изключения