tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von zerix
  • 1 Beitrag von zerix
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
1244
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    LeeroyJenkins LeeroyJenkins ist offline Rookie
    Registriert seit
    May 2010
    Beiträge
    8
    Hallo!
    Ich suche hier nach einer geeigneten Lösung, um eine ArrayList die das Objekt <Brawler> enthält, absteigend nach der Geschwindigkeit zu ordnen ( Brawler.getSpeed())
    Habe schon mehrere Foren durchsucht, aber leider keine passende Lösung gefunden.
    Vielen Dank im voraus,
    LeeroyJenkins
     

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    schau dir mal das Interface Comparable an. Das musst du bei deiner Klasse implementieren.
    Dann schau die mal die Klasse Collections an. Dort gibt es sort-Methoden.

    Gruß

    Sascha
    LeeroyJenkins bedankt sich. 
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #3
    LeeroyJenkins LeeroyJenkins ist offline Rookie
    Registriert seit
    May 2010
    Beiträge
    8
    Das müsste dann ja etwa so aussehen.

    Code :
    1
    
    public class Brawler implements Comparable{...}

    Mein Problem ist jetzt, dass ich nicht wirklich verstehe wie ich den comparator für Collections.sort erstellen muss.
     

  4. #4
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Ich hab es falsch beschrieben.
    Du implementierst es nicht in dieser Klasse sondern du erstellst eine neue Klasse die das Interface implementiert.
    Dann musst du die compare-Methode implementieren. In dieser Methode kannst du dann vergleichen.

    Für kleiner gibst du dann -1, für gleich 0 und für größer 1 zurück.

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  5. #5
    LeeroyJenkins LeeroyJenkins ist offline Rookie
    Registriert seit
    May 2010
    Beiträge
    8
    ich habs mir jetzt so überlegt, dass ich es doch mit implementiere, und dann eine compareTo methode erstelle. sieht dann so aus.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
        public int compareTo(Object o)
        {
            Brawler theOtherBrawler = Brawler(o);
            if (this.getSpeed() == theOtherBrawler.getSpeed())
                return 0;
            else if(this.getSpeed() > theOtherBrawler.getSpeed())
                return 1;
            else
                return -1;
        }

    das ist dann in der Klasse enthalten die dann Comparable implementiert.
    Oder muss ich das so machen :
    Code :
    1
    
    class BrawlCompare extends Brawler implements Comparable{...}
    ?
     

  6. #6
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Nee nee, ich bin heute verstrahlt.
    Comparable ist richtig und bei deiner Brawler-Klasse implementieren ist richtig. Du hast es richtig implementiert.
    So musst du es nicht machen.
    Code :
    1
    
    class BrawlCompare extends Brawler implements Comparable{...}

    Beim meinem letzten Post hab ich an den Comparator gedacht. Das wäre auch noch eine Möglichkeit gewesen.

    Gruß

    Sascha
    LeeroyJenkins bedankt sich. 
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  7. #7
    LeeroyJenkins LeeroyJenkins ist offline Rookie
    Registriert seit
    May 2010
    Beiträge
    8
    Hmmm. Ich glaub langsam ich bin zu blöd dafür xD
    habe jetzt diesen code hier benutzt fürs compareTo
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
        public int compareTo(Object o)
        {
            Brawler otherBrawler = (Brawler) o;
            if (this.getSpeed() == otherBrawler.getSpeed())
                return 0;
            else if(this.getSpeed() > otherBrawler.getSpeed())
                return 1;
            else
                return -1;
        }

    und zum testen
    Code :
    1
    
        System.out.println((BattleList.get(0)).compareTo(BattleList.get(1)));
    BattleList ist die ArrayList, die die Brawler enthält.
    Nur bekomm ich dann jedes mal beim kompilieren:

    cannot find symbol method compareTo(Brawler).

    dann hab ich mir überlegt den code so zu verändern, dass es so aussieht:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
        public int compareTo(Brawler otherBrawler)
        {
     
            if (this.getSpeed() == otherBrawler.getSpeed())
                return 0;
            else if(this.getSpeed() > otherBrawler.getSpeed())
                return 1;
            else
                return -1;
        }

    nur dann erhalte ich jedes mal beim kompilieren der Klasse
    Brawler is not abstract and does not override abstract method compareTo(java.lang.object) in java.lang.comparable.

    wenn ich die klasse dann abstrakt definiere
    Code :
    1
    
    public abstract class Brawler implements Comparable{...}
    erhalte ich beim kompilieren des eigentlichen Spiels wiederum dieselbe Fehlermeldung wie vorher:

    cannot find symbol method compareTo(Brawler)

    Habe also jetzt wirklich keine ahnung mehr wie ich dass jetzt coden muss damit es funktioniert :/
     

  8. #8
    LeeroyJenkins LeeroyJenkins ist offline Rookie
    Registriert seit
    May 2010
    Beiträge
    8
    Ich bin einfach nur ein Vollidiot.
    Ich hatte ein BackUp gespeichert, und die Brawler Klasse aus dem BackUp offen, aber den Runner in einem anderen Ordner. Kein Wunder, dass der die Methode nicht finden konnte, sie war ja auch gar nicht da .
    Vielen Dank trotzdem für die Hilfe, Problem ist jetzt gelöst.
    Collections.sort(BattleList) sortiert es jetzt genau wie es sein soll
     

Ähnliche Themen

  1. Absteigend Sortieren
    Von Fehlerteufel im Forum PHP
    Antworten: 9
    Letzter Beitrag: 20.01.07, 11:05
  2. Antworten: 3
    Letzter Beitrag: 27.10.06, 08:24
  3. Ergebnis absteigend sortieren
    Von marcus24 im Forum PHP
    Antworten: 13
    Letzter Beitrag: 24.05.05, 23:13
  4. Datum absteigend sortieren!
    Von Lapachon im Forum PHP
    Antworten: 4
    Letzter Beitrag: 22.11.04, 12:06
  5. ArrayList sortieren
    Von mgd-one im Forum .NET Archiv
    Antworten: 8
    Letzter Beitrag: 31.01.04, 14:40