Oversikt over sammenlignbart i Java-eksempel

Sammenlignbar i Java er en interferens som brukes til å sammenligne nåværende objekter med andre objekter av samme type. Denne sammenligningen kan brukes til å sortere elementer i en samling. Du må implementere grensesnittet i en klasse for å gjøre det sorterbart eller "sammenlignbart". Du må implementere bare en metode "sammenligne". Denne bestillingen av enhver type kalles naturlig bestilling og den implementerte “sammenligne” metoden kalles naturlig sammenligningsmetode. Her i denne artikkelen Sammenlignbar i Java-eksempel vil vi se på de forskjellige eksemplene på sammenlignbare i java.

Erklæring:

Grensesnitt Sammenlignbar

For å implementere dette grensesnittet, må du implementere denne metoden:

public int compareTo(To);

parametere:

T - er typen objekt som dette objektet blir sammenlignet med.

Returverdi:

CompareTo-metoden returnerer 0 hvis objektet er spesifisert og dette objektet er like, returnerer et negativt heltall hvis dette objektet er mindre enn objektet som er spesifisert, og det returnerer positivt heltall hvis dette objektet er større enn det spesifiserte objektet.

kaster:

ClasscastException - Hvis objektet som er sendt til denne metoden, er null

NullPointerException - Hvis objektet som er gitt til denne metoden, ikke er kompatibelt med dette objektet.

Klasser som implementerer Sammenlignbart grensesnitt, har deres naturlige bestilling spesifisert med seg, slik at de kan sorteres direkte i Collection eller Arrays ved å bruke Collections.sort () og Arrays.sort (). De kan også brukes som nøkkel i sorterte kart og elementer i sorterte sett uten å spesifisere Comparator separat.

La oss forstå det sammenlignbare grensesnittet ved hjelp av et eksempel:

Eksempel:

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

Produksjon:

Forklaring

Dette er en applikasjon for å lagre studentdetaljer.

  • For det første har vi laget en klasse "Student" som representasjon av enheten Student. Vi skal lagre grunnleggende detaljer som rulletall, navn og alder på studenter.
  • Og kravet er å sortere listen over studenter basert på rullenummer.
  • For å oppfylle dette kravet, blir et sammenlignbart grensesnitt implementert og sammenlignet med studentene basert på rulletall, siden du kan se implementeringen av "sammenligne" -metoden.
  • Så har vi hovedmetoden for å vise funksjonaliteten. Her har vi laget et “TreeSet” og lagt til fem elever som har tilfeldige rullenumre. Vi har brukt “TreeSet” fordi det lagrer elementer i sortert rekkefølge.
  • Hvis du itererer gjennom listen over elever, vil du oppdage at studenter er sortert basert på rullenummer. Det var hva kravet vårt var!
  • Vi kunne også sortere elevene basert på andre attributter som navn eller alder. For å gjøre dette, må vi bruke navn eller aldersvariabler i "sammenligne" -metoden i stedet for "rulleNo".

Eksempel:

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

Sammenlignbar vs komparator

Comparator er også et grensesnitt som Comparable som brukes til å sammenligne to objekter av en type. Forskjellen er at Comparator ikke implementeres i selve enhetsklassen. Vi må implementere det i en annen klasse og gi eksempelen til sorteringsmekanismen eksplisitt. Vi kan også bruke en anonym klasseinstans for dette formålet.

Anta for eksempel at vi har en studentklasse uten å implementere sammenlignbart grensesnitt:

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

Hvis du prøver å utføre dette programmet, vil du få dette unntaket:

Fordi TreeSet trenger en måte å sortere elementene på.

For å løse denne feilen kan vi bruke Comparator som implementert i dette programmet:

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

Du kan se at Comparator-grensesnittet er implementert i en anonym indre klasse og forekomst blir gitt til TreeSet for å sortere elementer. Nå vil du få en riktig utgang som tidligere.

Samlingsgrensesnitt i Java

Samlingen er rotgrensesnittet i samlingens rammer. Den inneholder erklæringen av alle generelle metoder som implementeres i samlinger som lister og sett. Kartgrensesnitt utvider ikke Collection-grensesnittet fordi Map er en samling av nøkkelverdipar og ikke bare en samling av elementer. Noen av samlingsgrensesnittmetodene implementeres i en abstrakt klasse “AbstractCollection”.

Dette grensesnittet implementeres ikke direkte, men utvides med spesifikke grensesnitt fordi implementeringen av disse metodene er samlingsspesifikke. For eksempel tillater noen samling dupliserte elementer (Ex-List), mens noen ikke (Ex-Set), noen opprettholder indeksering (Ex-List), mens andre ikke (Ex-Set).

Noen viktige metoder er beskrevet her:

  1. Boolsk add (E e): Denne metoden legger til et element i denne samlingen og returnerer statusen for add-operasjonen.
  2. boolean addAll (Collection c): Denne metoden legger til alle elementene fra den spesifiserte samlingen i denne samlingen og returnerer statusen for add-operasjonen.
  3. void clear (): Denne metoden fjerner alle elementene fra denne samlingen.
  4. boolean inneholder (Objekt o): Denne metoden sjekker om det spesifiserte elementet er til stede i samlingen eller ikke. Returnerer sant eller usant tilsvarende.
  5. boolean inneholder (Samling c): Denne metoden sjekker om alle elementene fra den spesifiserte samlingen er til stede i denne samlingen eller ikke og returnerer sant eller usant tilsvarende.
  6. boolean isEmpty (): Denne metoden sjekker om samlingen er tom eller ikke og returnerer sann eller usann deretter.
  7. Iterator iterator (): Denne metoden returnerer iterator for denne samlingen. Iterator brukes til å iterere gjennom alle elementene i denne samlingen.
  8. boolean remove (Object o): Denne metoden fjerner det angitte elementet fra samlingen og returnerer statusen for fjerningsoperasjonen.
  9. boolean removeAll (Collection c): Denne metoden fjerner alle elementene fra denne samlingen som er til stede i den spesifiserte samlingen og denne samlingen.
  10. boolean beholdAll (Collection c): Denne metoden fjerner alle elementene fra denne samlingen som ikke er til stede i den spesifiserte samlingen og er til stede i denne samlingen.
  11. int størrelse (): Denne metoden returnerer størrelsen på denne samlingen.
  12. Object () toArray (): Dette er en viktig metode som danner og returnerer matrisen som inneholder alle elementene i denne samlingen.
  13. T () toArray (T () a): Denne metoden legger til alle elementene i denne samlingen i en spesifisert gruppe og returnerer matrisen. Hvis størrelsen på matrisen er mindre enn størrelsen på denne samlingen, oppretter den en ny gruppe med typer som er den samme som typen spesifisert gruppe og returnerer den. Hvis størrelsen på den angitte arrayen er mer enn størrelsen på denne samlingen, settes nullverdien for gjenværende elementer i matrisen og returnerer matrisen.

Konklusjon - Sammenlignbar i Java-eksempel

For å oppsummere, er Comparable in Java-grensesnittet veldig nyttig for å sammenligne objekter manuelt, sortere samlinger og matriser eller for å ha sortert samling i seg selv. Vi kan også sortere elementer basert på forskjellige attributter til enheten. Det er ikke påkrevd, men anbefales på det sterkeste å ha det samme resultatet fra lik og “sammenligne” -metoden for å unngå rotet i en samling som bruker begge disse metodene.

Anbefalte artikler

Dette er en guide til Sammenlignbar i Java-eksempel. Her diskuterer vi Introduksjon Sammenlignbar i Java-eksempel, Samlingsgrensesnitt i Java, etc. Du kan også gå gjennom våre andre foreslåtte artikler for å lære mer–

  1. Sorterer i Java
  2. Beste Java IDE
  3. Sekvenser i Python
  4. Oracle strengfunksjoner
  5. Komplett guide til sortering i C # med eksempler
  6. PL / SQL-samlinger | Syntaks, typer, unntak