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
- Řetězcové předměty
- Objekty třídy Wrapper
- 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,'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); } } } </pre> <pre> 106 Ajay 27 101 Vijay 23 105 Jai 21 </pre></st.age)>
106 Ajay 27 101 Vijay 23 105 Jai 21