logo

Java Srovnatelné rozhraní

Java Comparable rozhraní se používá k řazení objektů uživatelem definované třídy. Toto rozhraní se nachází v balíčku java.lang a obsahuje pouze jednu metodu s názvem CompareTo(Object). Poskytuje pouze jednu třídicí sekvenci, tj. prvky můžete třídit pouze na základě jednoho datového členu. Může to být například rollno, jméno, věk nebo cokoli jiného.

metoda CompareTo(Object obj).

public int CompareTo(Object obj): Slouží k porovnání aktuálního objektu se zadaným objektem. Vrací se

  • kladné celé číslo, pokud je aktuální objekt větší než zadaný objekt.
  • záporné celé číslo, pokud je aktuální objekt menší než zadaný objekt.
  • nula, pokud je aktuální objekt roven zadanému objektu.

Můžeme třídit prvky:

emotikony iphone na android
  1. Řetězcové předměty
  2. Objekty třídy Wrapper
  3. Objekty třídy definované uživatelem

Třída sbírky

Sbírky třída poskytuje statické metody pro řazení prvků kolekcí. Pokud jsou prvky kolekce Set nebo Map, můžeme použít TreeSet nebo TreeMap. Nemůžeme však seřadit prvky seznamu. Třída Collections poskytuje metody pro řazení prvků prvků typu List.

Metoda třídy Collections pro řazení prvků seznamu

public void sort (seznam seznamu): Používá se k řazení prvků seznamu. Prvky seznamu musí být typu Porovnatelné.

knn algoritmus

Poznámka: Třídy String a Wrapper standardně implementují rozhraní Comparable. Pokud tedy uložíte objekty řetězcových nebo obalových tříd do seznamu, sady nebo mapy, bude ve výchozím nastavení Porovnatelné.


Java srovnatelný příklad

Podívejme se na příklad rozhraní Comparable, které třídí prvky seznamu na základě věku.

Soubor: 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; } } 

Soubor: 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 srovnatelný příklad: obrácené pořadí

Podívejme se na stejný příklad rozhraní Comparable, které třídí prvky seznamu na základě věku v opačném pořadí.

jak se vymanit ze smyčky while java

Soubor: 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