Java Comparable rozhranie sa používa na usporiadanie objektov užívateľom definovanej triedy. Toto rozhranie sa nachádza v balíku java.lang a obsahuje iba jednu metódu s názvom CompareTo(Object). Poskytuje iba jednu postupnosť triedenia, t.j. prvky môžete triediť iba na základe jedného dátového člena. Môže to byť napríklad rollno, meno, vek alebo čokoľvek iné.
metóda porovnaťTo(Object obj).
public int CompareTo(Object obj): Používa sa na porovnanie aktuálneho objektu so zadaným objektom. Vracia sa
staviteľ strún
- kladné celé číslo, ak je aktuálny objekt väčší ako zadaný objekt.
- záporné celé číslo, ak je aktuálny objekt menší ako zadaný objekt.
- nula, ak sa aktuálny objekt rovná zadanému objektu.
Môžeme triediť prvky:
- Reťazové predmety
- Objekty triedy Wrapper
- Objekty triedy definované používateľom
Kolekčná trieda
zbierky poskytuje statické metódy na triedenie prvkov kolekcií. Ak sú prvky kolekcie Set alebo Map, môžeme použiť TreeSet alebo TreeMap. Nemôžeme však triediť prvky zoznamu. Trieda Collections poskytuje metódy na triedenie prvkov prvkov typu List.
Metóda triedy Collections na triedenie prvkov zoznamu
public void sort (zoznam zoznamov): Používa sa na triedenie prvkov zoznamu. Prvky zoznamu musia byť typu Porovnateľné.
Poznámka: Triedy String a Wrapper štandardne implementujú rozhranie Comparable. Ak teda uložíte objekty tried reťazcov alebo obalov do zoznamu, množiny alebo mapy, bude to štandardne porovnateľné.
Java porovnateľný príklad
Pozrime sa na príklad rozhrania Porovnateľné, ktoré triedi prvky zoznamu na základe veku.
python sort dictionary
Súbor: 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; } }
Súbor: 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
Porovnateľný príklad Java: opačné poradie
Pozrime sa na rovnaký príklad rozhrania Porovnateľné, ktoré triedi prvky zoznamu na základe veku v opačnom poradí.
Súbor: 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