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:

  1. 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.
  2. 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.
  3. void clear (): Ez a módszer eltávolítja az összes elemet a gyűjteményből.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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ó.
  10. 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.
  11. int méret (): Ez a módszer adja vissza a gyűjtemény méretét.
  12. 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.
  13. 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.

  1. Rendezés Java-ban
  2. A legjobb Java IDE
  3. Szekvenciák Pythonban
  4. Oracle String funkciók
  5. Teljes útmutató a C # szerinti rendezéshez, példákkal
  6. PL / SQL gyűjtemények Szintaxis, típusok, kivételek

Kategória: