Gå til innhold

Hvordan fungerer argumentene til compare()


Anbefalte innlegg

Jeg er klar over at den sammenligner det første og det andre argumentet og returnerer en int... det jeg lurer på er:

Da compare-metoden så vidt jeg har forstått IKKE er statisk, hvorfor må den da ha to referanser som argument? Jeg trodde den sammenlignet arumentet med det objektet den blir utført på.

Når den ikke er statisk kunne jeg vel gjort slik hvis det var et argument?

if (o1.compare(o2)<0)

Der o1 og o2 er objekter av en klasse som er implementerer Comparator.

 

Sånn som det er nå må jeg skrive:

if (etellerannet.compare(o1, o2)<0)

 

Og hva er dette "etellerannet"?

 

Hilsen nybegynner i java

 

 

 

edit: trykkleif nr 2++

Endret av oro2
Lenke til kommentar
Videoannonse
Annonse

En comparator sammenligner ikke argumentet mot comparator objektet, men argumentene mot hverandre, altså mer en "Pure Fabrication" eller 'convenience' klasse enn en verdi i seg selv.

 

Metoden compare(Object o1, Object o2) returnerer noe større enn 1 hvis det første argumentet er 'størst', 0 hvis de er like og mindre enn null hvis det siste argumentet er størst.

 

I koden du viser er "etellerannet" et objekt som implementerer Comparator, som vil si at denne klassen kan sammenligne objekter (altså at den har en compare metode). Hvis o2 er størst vil kallet returnere noe negativt og if setningen slår til.

 

Edit: Hvis du vil sammenligne dem direkte må du implementere Comparable som har metoden compareTo(Object o) i klassen du vil sammenligne, denne virker på samme måten som compare metoden i Comparator objekter, men det første argumentet er implisitt Comparable objektet selv.

Endret av MailMan13
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...