Översikt över Jämförbar i Java-exempel

Jämförbar i Java är en störning som används för att jämföra aktuella objekt med andra objekt av samma typ. Denna jämförelse kan användas för att sortera element i en samling. Du måste implementera gränssnittet i en klass för att göra det sorterbart eller "jämförbart". Du måste implementera bara en metod "jämför". Denna beställning av vilken typ som helst kallas naturlig beställning och den implementerade ”jämförTo” -metoden kallas naturlig jämförelsemetod. Här i den här artikeln Jämförbar i Java-exempel kommer vi att titta på de olika exemplen på jämförbara i java.

Deklaration:

Gränssnitt Jämförbart

För att implementera detta gränssnitt måste du implementera den här metoden:

public int compareTo(To);

parametrar:

T - är den typ av objekt som detta objekt jämförs med.

Returvärde:

jämförTo-metoden returnerar 0 om objektet anges och detta objekt är lika, returnerar ett negativt heltal om detta objekt är mindre än det angivna objektet, och det returnerar positivt heltal om detta objekt är större än det angivna objektet.

kast:

ClasscastException - Om objektet som skickas till den här metoden är noll

NullPointerException - Om objektet som skickas till den här metoden inte är kompatibelt med detta objekt.

Klasser som implementerar jämförbart gränssnitt har sin naturliga beställning specificerad med dem och så att de kan sorteras direkt i Collection eller Arrays med Collections.sort () och Arrays.sort (). De kan också användas som nyckel i sorterade kartor och element i sorterade uppsättningar utan att specificera Comparator separat.

Låt oss förstå det jämförbara gränssnittet med hjälp av ett exempel:

Exempel:

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

Produktion:

Förklaring

Detta är en applikation för att lagra studentinformation.

  • Först har vi skapat en klass "Student" som representationen för enheten Student. Vi kommer att lagra grundläggande detaljer som studienummer, namn och ålder.
  • Och kravet är att sortera listan över studenter baserat på rullnummer.
  • För att uppfylla detta krav implementeras ett jämförbart gränssnitt och jämförs med eleverna baserat i rullnummer, eftersom du kan se implementeringen av metoden "jämför".
  • Sedan har vi huvudmetoden för att visa funktionaliteten. Här har vi skapat en "TreeSet" och lagt till fem elever med slumpmässiga rullnummer. Vi har använt “TreeSet” eftersom det lagrar element i sorterad ordning.
  • Om du nu upprepar listan över studenter kommer du att upptäcka att studenter sorteras baserat på rullnummer. Det var vad vårt krav var!
  • Vi kan också sortera eleverna utifrån andra attribut som namn eller ålder. För att göra detta måste vi använda namn- eller åldersvariabler i metoden "jämför" till "rollNo".

Exempel:

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

Jämförbar jämfört med jämförelse

Comparator är också ett gränssnitt som Comparable som används för att jämföra två objekt av en typ. Skillnaden är att Comparator inte implementeras i själva enhetsklassen. Vi måste implementera det i en annan klass och tillhandahålla exemplet till sorteringsmekanismen uttryckligen. Vi kan också använda en anonym klassinstans för detta ändamål.

Anta till exempel att vi har en studentklass utan att implementera jämförbart gränssnitt:

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

Om du försöker köra detta program får du detta undantag:

Eftersom TreeSet behöver ett sätt att sortera elementen.

För att lösa detta fel kan vi använda Comparator som implementerat i detta program:

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 att Comparator-gränssnittet implementeras i en anonym inre klass och instans tillhandahålls TreeSet för att sortera element. Nu får du en korrekt utgång som tidigare.

Samlingsgränssnitt i Java

Samlingen är rotgränssnittet i samlingens ramverk. Den innehåller deklarationen av alla allmänna metoder som implementeras i samlingar som listor och uppsättningar. Kartgränssnittet utvidgar inte Collection-gränssnittet eftersom Map är en samling av nyckelvärdespar och inte bara en samling element. Några av samlingsgränssnittsmetoderna implementeras i en abstrakt klass "AbstractCollection".

Detta gränssnitt implementeras inte direkt utan utökas med specifika gränssnitt eftersom implementeringen av dessa metoder är insamlingsspecifik. Till exempel tillåter en del samling duplicerade element (Ex-List) medan vissa inte (Ex-Set), vissa behåller indexering (Ex-List) medan andra inte (Ex-Set).

Några viktiga metoder beskrivs här:

  1. Boolean add (E e): Den här metoden lägger till ett element i denna samling och returnerar statusen för add-operationen.
  2. boolean addAll (Samling c): Den här metoden lägger till alla element från den angivna samlingen i denna samling och returnerar statusen för tilläggsoperationen.
  3. void clear (): Den här metoden tar bort alla element från denna samling.
  4. boolean innehåller (Objekt o): Den här metoden kontrollerar om det angivna elementet finns i samlingen eller inte. Returnerar sant eller falskt.
  5. boolean innehåller (samling c): Den här metoden kontrollerar om alla element från den angivna samlingen finns i denna samling eller inte och returnerar sant eller felaktigt i enlighet därmed.
  6. boolean isEmpty (): Den här metoden kontrollerar om samlingen är tom eller inte och returnerar sant eller felaktigt i enlighet därmed.
  7. Iterator iterator (): Den här metoden returnerar iterator för denna samling. Iterator används för att iterera igenom alla element i denna samling.
  8. boolean remove (Object o): Den här metoden tar bort det angivna elementet från samlingen och returnerar statusen för att ta bort operationen.
  9. boolean removeAll (Collection c): Den här metoden tar bort alla element från denna samling som finns i den angivna samlingen och denna samling.
  10. boolean beholdAll (Samling c): Den här metoden tar bort alla element från denna samling som inte finns i den angivna samlingen och finns i denna samling.
  11. int size (): Den här metoden returnerar storleken på denna samling.
  12. Object () toArray (): Detta är en viktig metod som bildar och returnerar matrisen som innehåller alla elementen i denna samling.
  13. T () toArray (T () a): Den här metoden lägger till alla element i denna samling i en specificerad matris och returnerar arrayen. Om storleken på matrisen är mindre än storleken på denna samling skapar den en ny matris med samma typ som den angivna arrayen och returnerar den. Om storleken på den angivna arrayen är mer än storleken på denna samling, ställs nollvärdet för återstående element i arrayen och returnerar arrayen.

Slutsats - Jämförbart i Java-exempel

Sammanfattningsvis är Comparable in Java-gränssnittet mycket användbart för att jämföra objekt manuellt, sortera samlingar och matriser eller för att ha sorterat samling själv. Vi kan också sortera element baserat på enhetens olika attribut. Det krävs inte men rekommenderas starkt att ha samma resultat från lika och metoden "jämför" för att undvika röran i en samling som använder båda dessa metoder.

Rekommenderade artiklar

Detta är en guide till Jämförbar i Java-exempel. Här diskuterar vi introduktionen Jämförbar i Java-exempel, samlingsgränssnitt i Java, etc. Du kan också gå igenom våra andra föreslagna artiklar för att lära dig mer–

  1. Sorterar i Java
  2. Bästa Java IDE
  3. Sekvenser i Python
  4. Oracle strängfunktioner
  5. Komplett guide till sortering i C # med exempel
  6. PL / SQL-samlingar | Syntax, typer, undantag

Kategori: