Avatar billede thecokeguy Nybegynder
12. maj 2008 - 13:59 Der er 1 kommentar og
1 løsning

compareTo med ukendte objekter

Hej...

Jeg forsøger at skrive en metode, der tager to objekter som argumenter. Og som så skulle kunne sammenligne dem via compareTo, så jeg senere kan definere netop denne metode for mange forskellige objekter. Altså noget lign.:

public int sort(Object ob1, Object ob2) {
  return ob1.compareTo(ob2);
}

Nogen måde at dette ville være muligt... Har lidt svært ved at se hvordan jeg implementerer "Comparable" i ob1 og ob2.

På forhånd tak for hjælpen
Avatar billede arne_v Ekspert
12. maj 2008 - 15:00 #1
Du kan ikke sortere vilkaarlige objekter.

Du skal have en compareTo som sammenligner objekter af samme type.

Den her kan f.eks. sorteres:

public class Medarbejder implements Comparable<Medarbejder> {
    private int nr;
    private String navn;
    private String stilling;
    public Medarbejder(int nr) {
        this(nr, "", "");
    }
    public Medarbejder(int nr, String navn, String stilling) {
        this.nr = nr;
        this.navn = navn;
        this.stilling = stilling;
    }
    public int getNr() {
        return nr;
    }
    public void setNr(int nr) {
        this.nr = nr;
    }
    public String getNavn() {
        return navn;
    }
    public void setNavn(String navn) {
        this.navn = navn;
    }
    public String getStilling() {
        return stilling;
    }
    public void setStilling(String stilling) {
        this.stilling = stilling;
    }
    @Override
    public String toString() {
        return "[" + nr + "," + navn + "," + stilling + "]";
    }
    @Override
    public boolean equals(Object o) {
        if(o instanceof Medarbejder) {
            Medarbejder m = (Medarbejder)o;
            return (m.nr == this.nr);
        } else {
            return false;
        }
    }
    @Override
    public int hashCode() {
        return navn.hashCode();
    }
    @Override
    public int compareTo(Medarbejder m) {
        return navn.compareTo(m.navn);
    }
}

foer generics (Java 1.4 og tidligere) tog compareTo Object og man var noedt til
at caste i metoden.
Avatar billede arne_v Ekspert
29. august 2008 - 02:28 #2
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester