logo

Java sammenligneligt interface

Java Comparable interface bruges til at bestille objekterne i den brugerdefinerede klasse. Denne grænseflade findes i pakken java.lang og indeholder kun én metode ved navn compareTo(Object). Det giver kun en enkelt sorteringssekvens, dvs. du kan sortere elementerne kun på basis af et enkelt datamedlem. Det kan for eksempel være rollno, navn, alder eller andet.

compareTo(Object obj) metode

public int compareTo(Object obj): Det bruges til at sammenligne det aktuelle objekt med det angivne objekt. Det vender tilbage

  • positivt heltal, hvis det aktuelle objekt er større end det angivne objekt.
  • negativt heltal, hvis det aktuelle objekt er mindre end det angivne objekt.
  • nul, hvis det aktuelle objekt er lig med det angivne objekt.

Vi kan sortere elementerne i:

  1. String objekter
  2. Indpakningsklasseobjekter
  3. Brugerdefinerede klasseobjekter

Samlinger klasse

Samlinger klasse giver statiske metoder til at sortere elementerne i samlinger. Hvis samlingselementer er af Set eller Map, kan vi bruge TreeSet eller TreeMap. Vi kan dog ikke sortere elementerne i List. Collections class giver metoder til at sortere elementerne i Liste-typeelementer.

Metode for samlinger klasse til sortering af listeelementer

offentlig void sortering(listeliste): Det bruges til at sortere elementerne i List. Listeelementer skal være af den sammenlignelige type.

Bemærk: String class og Wrapper klasser implementerer som standard den Sammenlignbare grænseflade. Så hvis du gemmer objekterne i streng- eller wrapper-klasser i en liste, et sæt eller et kort, vil det som standard være sammenligneligt.


Java sammenligneligt eksempel

Lad os se eksemplet med den sammenlignelige grænseflade, der sorterer listeelementerne på basis af alder.

Fil: Student.java

 class Student implements Comparable{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int compareTo(Student st){ if(age==st.age) return 0; else if(age>st.age) return 1; else return -1; } } 

Fil: TestSort1.java

 import java.util.*; public class TestSort1{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,'Jai',21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } } 
 105 Jai 21 101 Vijay 23 106 Ajay 27 

Java sammenligneligt eksempel: omvendt rækkefølge

Lad os se det samme eksempel på den sammenlignelige grænseflade, der sorterer listeelementerne på basis af alder i omvendt rækkefølge.

Fil: Student.java

 class Student implements Comparable{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int compareTo(Student st){ if(age==st.age) return 0; else if(age<st.age) return 1; else -1; } < pre> <p>File: TestSort2.java</p> <pre> import java.util.*; public class TestSort2{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,&apos;Vijay&apos;,23)); al.add(new Student(106,&apos;Ajay&apos;,27)); al.add(new Student(105,&apos;Jai&apos;,21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+&apos; &apos;+st.name+&apos; &apos;+st.age); } } } </pre> <pre> 106 Ajay 27 101 Vijay 23 105 Jai 21 </pre></st.age)>
 106 Ajay 27 101 Vijay 23 105 Jai 21