Преглед упоредивог у Јава примеру

Упоредиво у Јави је сметња која се користи за поређење тренутних објеката са другим објектима исте врсте. Ово поређење се може користити за сортирање елемената у колекцији. Морате да имплементирате интерфејс у ​​класу да бисте га учинили сортираним или „упоредивим“. Мораћете да примените само једну методу „ЦомпареТо“. Ово наређивање било које врсте назива се природним редоследом, а имплементирана метода „ЦомпареТо“ назива се природном методом поређења. Овде у овом чланку Упоредивог у Јава формату размотрићемо различите примере примерљивих у Јави.

Изјава:

Интерфејс упоредив

Да бисте имплементирали овај интерфејс, морате имплементирати овај метод:

public int compareTo(To);

Параметри:

Т - је врста објекта са којим се овај објекат упоређује.

Повратна вредност:

метода ЦомпареТо враћа 0 ако је објект наведен, а овај објект једнак, враћа негативни цијели број ако је овај објект мањи од наведеног објекта и враћа позитивни цијели број ако је овај објект већи од наведеног објекта.

Баци:

ЦлассцастЕкцептион - Ако је предмет прослеђен овој методи ниједан

НуллПоинтерЕкцептион - Ако објект просљеђен овом методу није компатибилан с овим објектом.

Класе које имплементирају Упоредиви интерфејс, имају свој природни поредак са њима и тако се могу сортирати директно у Цоллецтион или Арраис помоћу Цоллецтионс.сорт () и Арраис.сорт (). Такође, они се могу користити као кључ у разврстаним мапама и елементима у сортираним скуповима, а да не упоредите посебно Цомпаратор.

Да разумемо Упоредни интерфејс уз помоћ примера:

Пример:

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);
)
)
)

Излаз:

Објашњење

Ово је апликација за чување детаља о студентима.

  • Прво смо створили класу „Студент“ као репрезентацију ентитета Студент. Складићемо основне детаље попут броја ролне, имена и старости ученика.
  • А услов је да се листа ученика сортира на основу броја рола.
  • Да бисте испунили овај захтев, примењује се упоредиви интерфејс и упоређује се са студентима на основу броја рола, као што можете видети имплементацију методе "упореди".
  • Затим имамо главни метод да покажемо функционалност. Овде смо направили „ТрееСет“ и додали пет ученика који имају насумичне бројеве ролни. Користили смо „ТрееСет“ јер чува елементе у сортираном редоследу.
  • Ако поновите списак ученика, установићете да су студенти сортирани на основу броја листа. То је био наш захтев!
  • Такође бисмо могли да сортирамо студенте на основу других атрибута, као што су име или старост. Да бисмо то урадили, мораћемо да користимо променљиве имена или старости у методи „ЦомпареТо“ уместо „роллНо“.

Пример:

@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);
)

Упоредни вс Упоредни

Цомпаратор је такође интерфејс попут Цомпарабле који се користи за поређење два објекта типа. Разлика је у томе што се компаратор не имплементира у саму класу ентитета. Морамо је имплементирати у другу класу и изричито пружити инстанцу механизму за сортирање. У ту сврху можемо да користимо и анонимни примерак класе.

На пример, претпоставимо да имамо Студент класу без примене Упоредивог интерфејса:

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);
)
)
)

Ако покушате да извршите овај програм, добићете овај изузетак:

Јер ТрееСету је потребан начин да се разврстају елементи.

Да бисмо решили ову грешку, можемо да користимо Упоредник који је имплементиран у овом програму:

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);
)
)
)

Можете видети да је Цомпаратор интерфејс имплементиран у анонимну унутрашњу класу и да је примерак дат ТрееСет-у за сортирање елемената. Сада ћете добити одговарајући излаз као раније.

Интерфејс колекције на Јави

Колекција је роот сучеље у оквиру колекција. Садржи изјаву о свим методама опште намене које се имплементирају у колекцијама попут Листе и сетова. Мапе сучеље не проширује сучеље Цоллецтион јер је Мап колекција парова кључ-вриједност, а не само збирка елемената. Неке од метода интерфејса Цоллецтион реализоване су у апстрактној класи „АбстрацтЦоллецтион“.

Ово сучеље се не имплементира директно, већ се проширује посебним интерфејсима јер је примена ових метода специфична за прикупљање. На пример, нека колекција дозвољава дупликат елемената (Ек-Листа) док неки не (Ек-Сет), неки одржавају индексирање (Ек-Листа) док неки не (Ек-Сет).

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

  1. Боолеан адд (Е е): Ова метода додаје елемент овој колекцији и враћа статус операције додавања.
  2. боолеан аддАлл (Колекција ц): Ова метода додаје све елементе из наведене колекције у ову колекцију и враћа статус операције додавања.
  3. воид цлеар (): Ова метода уклања све елементе из ове колекције.
  4. боолеан садржи (Објецт о): Ова метода провјерава је ли наведени елемент присутан у колекцији или не. Враћа тачно или лажно у складу са тим.
  5. боолеан садржи (Збирка ц): Ова метода провјерава јесу ли сви елементи из наведене колекције присутни у овој колекцији или не и враћа ли се истинито или лажно у складу с тим.
  6. боолеан исЕмпти (): Ова метода проверава да ли је колекција празна или не и враћа ли се тачно или лажно.
  7. Итератор итератор (): Ова метода враћа итератор за ову колекцију. Итератор се користи за понављање кроз све елементе у овој колекцији.
  8. боолеан ремове (Објецт о): Ова метода уклања наведени елемент из колекције и враћа статус операције уклањања.
  9. боолеан ремовеАлл (Колекција ц): Ова метода уклања све елементе из ове колекције који су присутни у одређеној колекцији и овој колекцији.
  10. боолеан ретаинАлл (Збирка ц): Овом методом се уклањају сви елементи из ове колекције који нису наведени у одређеној колекцији и постоје у овој колекцији.
  11. инт сизе (): Ова метода враћа величину ове колекције.
  12. Објецт () тоАрраи (): Ово је важна метода која формира и враћа низ који садржи све елементе ове колекције.
  13. Т () тоАрраи (Т () а): Ова метода додаје све елементе ове колекције у одређени низ и враћа матрицу. Ако је величина матрице мања од величине ове колекције, тада креира нови низ типова једнак типу одређеног низа и враћа га. Ако је величина специфицираног низа већа од величине ове колекције, нулта вриједност се поставља за преостале елементе у пољу и враћа низ.

Закључак - Упоредив у примеру Јава

Да сумирам, Упоредиви у Јава интерфејсу је врло користан за ручно поређење објеката, сортирање колекција и низова или за сортирање саме колекције. Такођер можемо сортирати елементе на основу различитих атрибута ентитета. Није потребно, али препоручујемо да добијете исти резултат из једнаке вредности и „ЦомпареТо“ методу како бисте избегли неред у колекцији која користи обе ове методе.

Препоручени чланци

Ово је водич за Упоредиво у Јава примеру. Овде смо расправљали о Уводу упоредивом у Јава примеру, интерфејсу колекције на Јави итд. Такође можете да прођете кроз остале наше предложене чланке да бисте сазнали више -

  1. Сортирање на Јави
  2. Бест Јава ИДЕ
  3. Секвенце у Питхон-у
  4. Орацле Стринг функције
  5. Комплетан водич за сортирање у Ц # са примерима
  6. ПЛ / СКЛ колекције | Синтакса, типови, изузеци

Категорија: