Soovitatav, 2024

Toimetaja Valik

Erinevus võrreldava ja komparaatori vahel Java-is

Võrreldav ja võrdlev mõlemad on Java-i üldised liidesed, mida kasutatakse objektide andmete elementide võrdlemiseks. Võrdlev liides on olemas java.lang paketis ja Comparator liides on java.util paketis. Võrreldavate ja võrdlevate liideste vahel on põhiline erinevus see, et võrdlev liides pakub ühte sorteerimisjärjestust, samas kui Comparator liides pakub mitmekordseid sorteerimisjärjestusi. Võrreldava ja võrdleva liidese vahel on mõningaid muid erinevusi, mida uurime võrdluskaardil.

Võrdluskaart

Võrdluse alusVõrreldavComparator
PõhilineVõrdlev liides võimaldab ainult ühte sorteerimisjärjestust.Comparator liides võimaldab mitut sorteerimisjärjestust.
PaketidVõrdlev liides on olemas java.lang paketis.Comparatori liides on java.util paketis.
MeetodidVõrdlev liides sisaldab ainult ühte meetodit
avalik int CompareTo (Object obj);
Comparator liides sisaldab kahte meetodit
avalikkuse võrdlemine (Object obj1, Object obj2)
boolean võrdub (Object obj)
RakendamineVõrreldavat liidest rakendab klass, mille objekte võrreldakse.Komparaatori liidese rakendab hargnev klass selle klassi asemel, mille objekte võrreldakse.
VõrdlusVõrdlus (Object obj) meetod võrdleb meetodit, mida kasutatakse meetodi kutsumiseks kasutatud meetodiga.Võrdle (Object obj1, Object obj2) meetod võrdleb mõlemat meetodile edastatud määratud objekti.
Loend / ArrayKui võrreldava tüübi objekti loendit tuleb võrrelda, siis kogumisklass annab meetodi, st Kogumid.sort (loend lst).Kui võrreldava tüübi objektide loendit tuleb võrrelda, siis kogumisklass annab meetodi, st
Collections.sort (loend, võrdlus).

Võrdleva määratlus

Võrreldav on liides, mis on saadaval paketis java.lang. Klass rakendab Comparator liidest, et sorteerida oma objekti looduslikus järjekorras. Objektid sorteeritakse looduslikus järjekorras, mis tähendab, et objekte võrreldakse nende ASCII väärtustega. Klassid, mis rakendavad võrdlevat liidest, on baidi-, märgi-, topelt-, ujuv-, pikk-, lühi-, stringi- ja täisarvud. Isegi Kuupäev ja Calander klass rakendab ka võrreldavat liidest.

Võrdlev liides sisaldab ainult ühte meetodit, mis on võrdlemine (Object obj). See meetod võrdleb meetodi kutsumiseks kasutatud objekti parameetris määratud objektiga. Meetodi süntaks on järgmine:

 avalik int CompareTo (Object obj); 

Võrdlus (Object obj) meetod tagastab 0, kui mõlemad meetodi abil võrreldavad objektid sisaldavad sama väärtust, see tagastab -ve väärtuse, kui kutsuv objekt on väiksem kui määratud objekt ja tagastab + ve väärtuse, kui kutsuv objekt on suurem Väärtuste võrdlemine määratud objektiga.Kogude klass pakub loendi elementide sortimiseks sorteerimise meetodit. Võrreldava tüübi loendi (ja massiivi) elemendid võivad olla sorteeritud, kasutades meetodit „Kogud.sort (loend lst)”.

Komparaatori määratlus

Comparator on java.util paketis saadaval olev liides. Liides Comparator ei rakendata sellesse klassi, mille objekte võrreldakse, vaid eraldi klass rakendab Comparator liidese nii, et sorteerimisloogikat rakendatakse objektide igale andmeelemendile erinevas klassis. Komparaator sisaldab kahte järgmist meetodit:

 avalikkuse võrdlemine (Object obj1, Object obj2) ja boolean võrdub (Object obj) 

Ülaltoodud võrdluse () meetod võrdleb esimest objekti obj1 teise objektiga obj2. Võrdlus () meetod tagastab 0, kui mõlema meetodiga võrreldes on sama väärtus, see tagastab -ve väärtuse, kui objekt obj1 on väiksem kui objekt obj2 ja tagastab + ve väärtuse, kui objekt objekt1 on suurem väärtusega, kui objekt objekt1 on suurema väärtusega kui objekt obj1 objektile objekt2. Võrdsed () meetodid kontrollivad, kas määratud objekt on kutsuvale objektile võrdne. Võrdsed () meetodid on tõesed, kui mõlemad võrreldavad objektid on võrdsed, kuid see tagastab vale . Kogude klass pakub loendi ja võrdlustüübi elementide sorteerimise meetodit. Võrdlustüüpide loendielemendid sorteeritakse meetodi Collections.sort (nimekiri, võrdlus) järgi.

Võrreldava ja võrdleva peamised erinevused

  1. Võrreldav liides võimaldab ühekordset sorteerimisjärjestust, mis tähendab, et saate võrrelda ainult üksiku objekti elementi võrdluses () meetodis. Teisest küljest võimaldab Comparator liides mitut sorteerimisjärjestust, mis tähendab, et saate võrrelda objekti mitut andmeelementi.
  2. Võrdlevat liidest rakendab klass, mille objekte võrreldakse, sest sorteerimisloogika on määratletud sama klassi sees. Teisest küljest ei rakenda Comparator liides klassiga, mille objekte võrreldakse, sest sorteerimisloogika on määratletud eraldi klassides, kus iga klass määratleb objekti ühe andmeelemendi sorteerimise ja need defineerivad klassid rakendavad Comparator liidest .
  3. Võrdlev liides asub java.lang paketi sees, samas kui Comparator liides asub java.util paketi sees.
  4. Võrdlev liides deklareerib ainult ühe meetodi, mis on võrdneTo (Object obj), samas kui Comparator liides deklareerib kaks meetodit, mis on võrreldavad (Object obj1, Object obj2) ja võrdsed (Object obj).
  5. Võrdluses võrreldav võrdlusobjekt (Object obj) võrdleb meetodit, mis viitab objektile antud meetodile, samas kui võrdluse (Object obj1, Object obj2) meetod võrdleb Comparatori meetodit obj1 objektiga obj2, mis edastatakse meetodile.
  6. Kogude klass pakub sorteerimismeetodit „Kogud.sort (loend lst)”, et sorteerida võrreldava tüübi objekte. Kogude klass pakub sorteerimismeetodit Kogumik.sort (loend, võrdlus), et sorteerida Comparator-tüüpi objekte.

Järeldus:

Kui soovite sorteerida objektid looduslikus järjekorras, siis saate kasutada sarnast liidest, mida soovite mis tahes atribuudi alusel sorteerida, siis kasutatakse Comparator liidest.

Top