Ülevaade Java näitest

Javas võrreldav on häire, mida kasutatakse praeguste objektide võrdlemiseks sama tüüpi objektidega. Seda võrdlust saab kasutada elementide sortimiseks kollektsioonis. Peate liidese klassis rakendama, et muuta see sorteeritavaks või “võrreldavaks”. Peate rakendama ainult ühe meetodi „palygintiTo”. Seda suvalist tüüpi tellimist nimetatakse loomulikuks tellimiseks ja rakendatud meetodit „palygintiTo” nimetatakse loomulikuks võrdlusmeetodiks. Selles võrdlevas Java näiteartiklis käsitleme siin erinevaid javas leiduvaid näiteid.

Deklaratsioon:

Liides võrreldav

Selle liidese rakendamiseks peate rakendama järgmist meetodit:

public int compareTo(To);

Parameetrid:

T - objekti tüüp, millega seda objekti võrreldakse.

Tagastatav väärtus:

CompareTo meetod tagastab 0, kui objekt on määratud ja see objekt on võrdsed, tagastab negatiivse täisarvu, kui see objekt on väiksem kui määratud objekt, ja tagastab positiivse täisarvu, kui see objekt on suurem kui määratud objekt.

Viskab:

ClasscastException - kui sellele meetodile edastatud objekt on null

NullPointerException - kui sellele meetodile üle antud objekt ei ühildu selle objektiga.

Klassidel, mis rakendavad võrreldavat liidest, on täpsustatud nende loomulik järjestamine ja seega saab neid sorteerida otse kogumikus või massiivides, kasutades kogusid.sort () ja Arrays.sort (). Neid saab kasutada ka sorditud kaartide ja sorteeritud komplektide elementide võtmena, määramata komparaatorit eraldi.

Saame aru võrreldavast liidesest näite abil:

Näide:

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);
)
)
)

Väljund:

Seletus

See on rakendus õpilaste andmete salvestamiseks.

  • Esiteks oleme loonud klassi “õpilane” üksuse Õpilane esitusena. Salvestame põhiandmed, näiteks õpilaste rullnumber, nimi ja vanus.
  • Ja nõue on sorteerida õpilaste nimekiri järjekorranumbri alusel.
  • Selle nõude täitmiseks on rakendatud võrreldav liides ja seda võrreldakse õpilastega rullil põhineva liidesega, nagu näete meetodi „palygintiTo” rakendamist.
  • Siis on meil peamine meetod funktsionaalsuse näitamiseks. Oleme siin loonud “TreeSet” ja lisanud viis õpilast, kellel on juhuslikud rullnumbrid. Oleme kasutanud “TreeSet”, kuna see salvestab elemente järjestatud järjekorras.
  • Nüüd, kui korrata õpilaste nimekirja, leiad, et õpilased sorteeritakse rullide arvu järgi. Just see oli meie nõue!
  • Samuti võiksime õpilasi sorteerida muude omaduste (nt nimi või vanus) alusel. Selleks peame kasutama nime või vanuse muutujaid meetodi “palygintiTo” asemel “rollNo”.

Näide:

@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);
)

Võrreldav vs komparaator

Komparaator on ka liides nagu võrreldav, mida kasutatakse kahe tüüpi objekti võrdlemiseks. Erinevus on see, et komparaatorit pole olemiklassis endas rakendatud. Peame selle rakendama teises klassis ja andma selle eksemplari selgelt sorteerimismehhanismile. Saame sellel eesmärgil kasutada ka anonüümset klassi eksemplari.

Oletame näiteks, et meil on õpilasklass, rakendamata võrreldavat liidest:

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);
)
)
)

Kui proovite seda programmi käivitada, saate selle erandi:

Kuna TreeSet vajab viisi elementide sortimiseks.

Selle tõrke lahendamiseks saame kasutada komparaatorit, nagu selles programmis on rakendatud:

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);
)
)
)

Näete, et komparaatori liides on rakendatud anonüümses siseklassis ja elemendid sorteerimiseks antakse TreeSetile eksemplari. Nüüd saate korraliku väljundi nagu varem.

Kogumisliides Java-s

Kogumik on kogude raamistiku juurliides. See sisaldab deklaratsiooni kõigi üldotstarbeliste meetodite kohta, mida rakendatakse kollektsioonides nagu nimekirjad ja komplektid. Kaardiliides ei laienda kogumisliidest, kuna Kaart on võtme-väärtuste paaride kogum, mitte ainult elementide kogum. Mõnda kollektsiooni liidese meetodit rakendatakse abstraktses klassis “AbstractCollection”.

Seda liidest ei rakendata otseselt, vaid seda laiendatakse spetsiaalsete liidestega, kuna nende meetodite rakendamine on kogumipõhine. Näiteks võimaldab mõni kollektsioon dubleerida elemente (Ex-nimekiri), mõned aga mitte (Ex-Set), mõned säilitavad indekseerimise (Ex-List), mõned aga mitte (Ex-Set).

Siin kirjeldatakse mõnda olulist meetodit:

  1. Boolean add (E e): see meetod lisab elemendi sellesse kogusse ja tagastab lisamisoperatsiooni oleku.
  2. boolean addAll (kollektsioon c): see meetod lisab kõik määratud kollektsiooni elemendid sellesse kogusse ja tagastab lisamisoperatsiooni oleku.
  3. void clear (): Selle meetodiga eemaldatakse kogu elemendist kõik elemendid.
  4. tõeväärtus sisaldab (objekt o): see meetod kontrollib, kas määratud element on kollektsioonis olemas või mitte. Tagastab vastavalt tõese või vale.
  5. tõeväärtus sisaldab (kollektsioon c): see meetod kontrollib, kas kõik määratud kollektsiooni elemendid on selles kollektsioonis olemas või mitte, ning tagastab vastavalt tõese või vale.
  6. boolean isEmpty (): See meetod kontrollib, kas kogu on tühi või mitte, ning tagastab vastavalt tõese või vale.
  7. Iteraatori iteraator (): See meetod tagastab selle kogu iteraatori. Iteraatorit kasutatakse kogu selle kollektsiooni kõigi elementide iteratsiooniks.
  8. tõeväärtuse eemaldamine (objekt o): see meetod eemaldab määratud elemendi kogust ja tagastab eemaldamise toimingu oleku.
  9. boolean removeAll (kollektsioon c): Selle meetodiga eemaldatakse kogu sellest elemendist kõik elemendid, mis esinevad määratletud kollektsioonis ja selles kollektsioonis.
  10. boolean pysAll (kollektsioon c): Selle meetodiga eemaldatakse kogu sellest elemendist kõik elemendid, mis puuduvad määratletud kollektsioonis ja esinevad selles kollektsioonis.
  11. int suurus (): See meetod tagastab kogu suuruse.
  12. Object () toArray (): See on oluline meetod, mis moodustab ja tagastab massiivi, mis sisaldab kõiki selle kollektsiooni elemente.
  13. T () array (T () a): see meetod lisab kõik selle kollektsiooni elemendid määratud massiivi ja tagastab massiivi. Kui massiivi suurus on väiksem kui selle kogu suurus, loob see uue tüübi massiivi, mis on sama kui määratud massiivi tüüp, ja tagastab selle. Kui määratud massiivi suurus on suurem kui selle kollektsiooni suurus, seatakse massiivi ülejäänud elementide jaoks nullväärtus ja tagastatakse massiiv.

Järeldus - võrreldav Java näites

Kokkuvõtteks võib öelda, et Java-liideses on Comparative in Java väga kasulik objektide käsitsi võrdlemiseks, kollektsioonide ja massiivide sortimiseks või kogu ise sorteerimiseks. Samuti saame elemente sortida olemi erinevate atribuutide alusel. Mõlemat meetodit kasutava kollektsiooni jama vältimiseks pole tingimata vajalik, kuid väga soovitatav on saada sama tulemus võrrandite ja meetodiga „palygintiTo”.

Soovitatavad artiklid

See on Java Näite võrdlusjuhend. Siin käsitleme Java-näites võrreldavat sissejuhatust, Java-liidese kogumisliidest jne. Lisateabe saamiseks võite tutvuda ka meie teiste soovitatud artiklitega -

  1. Sorteerimine Java-s
  2. Parim Java IDE
  3. Järjestused Pythonis
  4. Oracle'i stringi funktsioonid
  5. Täielik juhend C # -s sortimise kohta koos näidetega
  6. PL / SQL kogud | Süntaks, tüübid, erandid

Kategooria: