Az összehasonlítható Java áttekintése
A Java-ban összehasonlítható egy olyan interferencia, amelyet az aktuális objektumok és az azonos típusú objektumok összehasonlításához használnak. Ez az összehasonlítás felhasználható a elemek elemzésére a gyűjteményben. A felületet osztályba kell telepítenie, hogy válogathatóvá vagy összehasonlíthatóvá váljon. Csak egy „palygintiTo” módszert kell végrehajtania. Az ilyen típusú rendezést természetes rendelésnek nevezzük, a megvalósított „CompareTo” módszert természetes összehasonlítási módszernek nevezzük. Ebben az összehasonlítható Java példában ebben a cikkben megnézzük a különféle példákat a Java javain.
Nyilatkozat:
Interfész összehasonlítható
Az interfész megvalósításához a következő módszert kell végrehajtania:
public int compareTo(To);
paraméterek:
T - az az objektum típusa, amellyel ezt az objektumot összehasonlítják.
Visszaérték:
a compaTo módszer 0-t ad vissza, ha az objektum megadott és ez az objektum megegyezik, negatív egész számot ad vissza, ha az objektum kisebb, mint a megadott objektum, és pozitív egész számot ad vissza, ha ez az objektum nagyobb, mint a megadott objektum.
dob:
ClasscastException - Ha az ehhez a módszerhez átadott objektum nulla
NullPointerException - Ha az ehhez a módszerhez átadott objektum nem kompatibilis ezzel az objektummal.
Az összehasonlítható felületet megvalósító osztályok meghatározzák a természetes sorrendet, és így közvetlenül a Collection.sort () és az Arrays.sort () segítségével rendezhetők a Collection vagy az Arrays alkalmazásban. Emellett kulcsként használhatók a rendezett térképekben és az elemekben a rendezett halmazokban, anélkül, hogy külön megneveznék az összehasonlítót.
A példa segítségével megértjük az összehasonlítható felületet:
Példa:
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);
)
)
)
Kimenet:
Magyarázat
Ez egy olyan alkalmazás, amely tárolja a hallgatói adatokat.
- Először létrehoztunk egy „Student” osztályt, amely a Student entitás ábrázolása. Tárolunk olyan alapvető részleteket, mint a tekercs száma, neve és a hallgatók kora.
- És a követelmény a hallgatók listájának rendezése a tekercs száma alapján.
- Ennek a követelménynek a teljesítéséhez egy összehasonlítható felületet valósítanak meg, és összehasonlítják a hallgatókkal a tekercsszám alapján, ahogyan láthatja az „Összehasonlítás” módszer megvalósítását.
- Aztán megvan a fő módszer a funkcionalitás bemutatására. Létrehoztunk egy „TreeSet” -et, és öt véletlenszerű roll-számmal rendelkező hallgatót adtunk hozzá. Azért használtunk a „TreeSet” -t, mert az elemeket rendezett sorrendben tárolja.
- Most, ha iterál a hallgatók listáján, rájössz, hogy a hallgatókat a tekercs száma alapján rendezik. Ez volt a mi követelményünk!
- A hallgatókat más tulajdonságok, például név vagy életkor alapján is osztályozhatjuk. Ehhez a „rollNo” helyett név vagy életkor változókat kell használnunk az „Hasonlítsd” módszernél.
Példa:
@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);
)
Összehasonlítható és összehasonlító
A Komparátor egy olyan felület is, mint a Kompatibilis, amelyet két típusú objektum összehasonlítására használnak. A különbség az, hogy az Összehasonlítót nem valósítják meg az entitás osztályban. Egy másik osztályban kell megvalósítanunk, és kifejezetten meg kell adnunk annak példáját a rendezési mechanizmus számára. Erre a célra anonim osztálypéldányt is használhatunk.
Tegyük fel például, hogy van egy Student osztályunk, összehasonlítható felület megvalósítása nélkül:
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);
)
)
)
Ha megpróbálja végrehajtani ezt a programot, akkor ezt a kivételt kapja:
Mivel a TreeSetnek szüksége van egy módra az elemek rendezésére.
A hiba kiküszöbölésére használhatjuk a programban végrehajtott Összehasonlítót:
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);
)
)
)
Láthatja, hogy az Összehasonlító felület névtelen belső osztályban van megvalósítva, és példányt kap a TreeSet számára az elemek rendezéséhez. Most már kapsz megfelelő kimenetet, mint korábban.
Gyűjtemény interfész Java-ban
A gyűjtemény a gyökér felület a gyűjtemények keretén belül. Ez tartalmazza az összes olyan általános célú módszer deklarációját, amelyeket olyan gyűjteményekben hajtanak végre, mint a listák és a készletek. A térkép interfész nem bővíti a Gyűjtemény felületet, mivel a Térkép kulcs-érték párok gyűjteménye, nem csupán elemek gyűjteménye. A Gyűjtemény interfész egyes módszereit egy elvont osztályban, az „AbstractCollection” valósítják meg.
Ezt a felületet nem közvetlenül valósítják meg, hanem speciális interfészek bővítik, mivel ezeknek a módszereknek a megvalósítása gyűjtemény-specifikus. Például egyes gyűjtemények lehetővé teszik az ismétlődő elemek létrehozását (Ex-lista), míg mások nem (Ex-Set), mások fenntartják az indexelést (Ex-List), míg mások nem (Ex-Set).
Néhány fontos módszert itt írunk le:
- Boolean add (E e): Ez a módszer hozzáad egy elemet ehhez a gyűjteményhez, és visszaadja az add művelet állapotát.
- logikai addAll (c gyűjtemény): Ez a módszer a megadott gyűjtemény összes elemét hozzáadja ebbe a gyűjteménybe, és visszaadja az add művelet állapotát.
- void clear (): Ez a módszer eltávolítja az összes elemet a gyűjteményből.
- logikai tartalom (o objektum): Ez a módszer ellenőrzi, hogy a megadott elem jelen van-e a gyűjteményben vagy sem. Ennek megfelelően igaz vagy hamis eredményt ad.
- logikai tartalmaz (c gyűjtemény): Ez a módszer ellenőrzi, hogy a megadott gyűjtemény összes eleme megtalálható-e ebben a gyűjteményben, és ennek megfelelően igaz vagy hamis értéket ad vissza.
- boolean isEmpty (): Ez a módszer ellenőrzi, hogy a gyűjtemény üres-e vagy sem, és ennek megfelelően igaz vagy hamis értéket ad vissza.
- Iterator iterator (): Ez a módszer iterátort ad vissza a gyűjteményhez. Az Iterator a gyűjtemény összes elemének iterálására szolgál.
- logikai eltávolítás (o objektum): Ez a módszer eltávolítja a megadott elemet a gyűjteményből, és visszaadja az eltávolítási művelet állapotát.
- boolean removeAll (c gyűjtemény): Ez a módszer eltávolítja a gyűjtemény összes elemét, amely a megadott gyűjteményben és a gyűjteményben található.
- boolean pysAll (c gyűjtemény): Ez a módszer eltávolítja a gyűjtemény összes elemét, amely nem szerepel a megadott gyűjteményben, és jelen van a gyűjteményben.
- int méret (): Ez a módszer adja vissza a gyűjtemény méretét.
- Object () toArray (): Ez egy fontos módszer, amely a gyűjtemény összes elemét tartalmazó tömböt hoz létre és adja vissza.
- T () toArray (T () a): Ez a módszer a gyűjtemény összes elemét hozzáadja egy megadott tömbbe, és visszaadja a tömböt. Ha a tömb mérete kisebb, mint a gyűjtemény mérete, akkor új típusú tömböt hoz létre, amely megegyezik a megadott tömb típusával, és visszaküldi. Ha a megadott tömb mérete meghaladja a gyűjtemény méretét, akkor a null értéket állítják be a tömb fennmaradó elemeire, és visszatér a tömbhez.
Következtetés - összehasonlítható a Java példában
Összegezve: a Összehasonlítható Java felület nagyon hasznos objektumok kézi összehasonlításához, gyűjtemények és tömbök rendezéséhez, vagy magának a gyűjteménynek a rendezéséhez. Elemeket is rendezhetünk az entitás különböző tulajdonságai alapján. Nem szükséges, de erősen ajánlott, hogy ugyanazt az eredményt kapjuk az egyenlők és a „palygintiTo” módszer alkalmazásával, hogy elkerüljük a rendetlenséget a gyűjteményben, amely mindkét módszert használja.
Ajánlott cikkek
Ez egy útmutató a Java Példa összehasonlíthatóságához. Itt tárgyaljuk a Java példában összehasonlítható bevezetést, a Java Java felhasználói felületét stb.
- Rendezés Java-ban
- A legjobb Java IDE
- Szekvenciák Pythonban
- Oracle String funkciók
- Teljes útmutató a C # szerinti rendezéshez, példákkal
- PL / SQL gyűjtemények Szintaxis, típusok, kivételek