Преглед упоредивог у Јава примеру
Упоредиво у Јави је сметња која се користи за поређење тренутних објеката са другим објектима исте врсте. Ово поређење се може користити за сортирање елемената у колекцији. Морате да имплементирате интерфејс у класу да бисте га учинили сортираним или „упоредивим“. Мораћете да примените само једну методу „ЦомпареТо“. Ово наређивање било које врсте назива се природним редоследом, а имплементирана метода „ЦомпареТо“ назива се природном методом поређења. Овде у овом чланку Упоредивог у Јава формату размотрићемо различите примере примерљивих у Јави.
Изјава:
Интерфејс упоредив
Да бисте имплементирали овај интерфејс, морате имплементирати овај метод:
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);
)
)
)
Можете видети да је Цомпаратор интерфејс имплементиран у анонимну унутрашњу класу и да је примерак дат ТрееСет-у за сортирање елемената. Сада ћете добити одговарајући излаз као раније.
Интерфејс колекције на Јави
Колекција је роот сучеље у оквиру колекција. Садржи изјаву о свим методама опште намене које се имплементирају у колекцијама попут Листе и сетова. Мапе сучеље не проширује сучеље Цоллецтион јер је Мап колекција парова кључ-вриједност, а не само збирка елемената. Неке од метода интерфејса Цоллецтион реализоване су у апстрактној класи „АбстрацтЦоллецтион“.
Ово сучеље се не имплементира директно, већ се проширује посебним интерфејсима јер је примена ових метода специфична за прикупљање. На пример, нека колекција дозвољава дупликат елемената (Ек-Листа) док неки не (Ек-Сет), неки одржавају индексирање (Ек-Листа) док неки не (Ек-Сет).
Овде су описане неке важне методе:
- Боолеан адд (Е е): Ова метода додаје елемент овој колекцији и враћа статус операције додавања.
- боолеан аддАлл (Колекција ц): Ова метода додаје све елементе из наведене колекције у ову колекцију и враћа статус операције додавања.
- воид цлеар (): Ова метода уклања све елементе из ове колекције.
- боолеан садржи (Објецт о): Ова метода провјерава је ли наведени елемент присутан у колекцији или не. Враћа тачно или лажно у складу са тим.
- боолеан садржи (Збирка ц): Ова метода провјерава јесу ли сви елементи из наведене колекције присутни у овој колекцији или не и враћа ли се истинито или лажно у складу с тим.
- боолеан исЕмпти (): Ова метода проверава да ли је колекција празна или не и враћа ли се тачно или лажно.
- Итератор итератор (): Ова метода враћа итератор за ову колекцију. Итератор се користи за понављање кроз све елементе у овој колекцији.
- боолеан ремове (Објецт о): Ова метода уклања наведени елемент из колекције и враћа статус операције уклањања.
- боолеан ремовеАлл (Колекција ц): Ова метода уклања све елементе из ове колекције који су присутни у одређеној колекцији и овој колекцији.
- боолеан ретаинАлл (Збирка ц): Овом методом се уклањају сви елементи из ове колекције који нису наведени у одређеној колекцији и постоје у овој колекцији.
- инт сизе (): Ова метода враћа величину ове колекције.
- Објецт () тоАрраи (): Ово је важна метода која формира и враћа низ који садржи све елементе ове колекције.
- Т () тоАрраи (Т () а): Ова метода додаје све елементе ове колекције у одређени низ и враћа матрицу. Ако је величина матрице мања од величине ове колекције, тада креира нови низ типова једнак типу одређеног низа и враћа га. Ако је величина специфицираног низа већа од величине ове колекције, нулта вриједност се поставља за преостале елементе у пољу и враћа низ.
Закључак - Упоредив у примеру Јава
Да сумирам, Упоредиви у Јава интерфејсу је врло користан за ручно поређење објеката, сортирање колекција и низова или за сортирање саме колекције. Такођер можемо сортирати елементе на основу различитих атрибута ентитета. Није потребно, али препоручујемо да добијете исти резултат из једнаке вредности и „ЦомпареТо“ методу како бисте избегли неред у колекцији која користи обе ове методе.
Препоручени чланци
Ово је водич за Упоредиво у Јава примеру. Овде смо расправљали о Уводу упоредивом у Јава примеру, интерфејсу колекције на Јави итд. Такође можете да прођете кроз остале наше предложене чланке да бисте сазнали више -
- Сортирање на Јави
- Бест Јава ИДЕ
- Секвенце у Питхон-у
- Орацле Стринг функције
- Комплетан водич за сортирање у Ц # са примерима
- ПЛ / СКЛ колекције | Синтакса, типови, изузеци