Liste sortieren

Status
Nicht offen für weitere Antworten.
M

maki

Gast
Dann musst du Klassen schreiben, die Comparator implementieren, das können auch innere Klassen sein.
 

Rogge

Aktives Mitglied
Ok, danke. Mache ich!

Nächstes Problem, die implementierung sieht jetzt so aus:

Code:
  public int compareTo(Datensatz d1){
    if (this.getEcon()<d1.getEcon()) {
      return -1;
    } else
    if (this.getEcon()==d1.getEcon()) {
      return 0;
    } else return 1;
  }

Der Aufruf ist wie folgt richtig?
Code:
 Collections.sort(daten);

Dafür bekomme ich Fehler:
cannot find symbol
method getEcon()
method sort(...
 
S

SlaterB

Gast
Code:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Datensatz
    extends Player
    implements Comparable<Datensatz>
{
    private int Id, Econ, Fleet, Tech, Exp, Acc; 
    private double Lvl; 

    public void setEcon(int x)      { Econ=x;        } 
    public void setFleet(int x)     { Fleet=x;       } 
    public void setTech(int x)      { Tech=x;        } 
    public void setExp(int x)       { Exp=x;         } 
    public void setAcc(int x)       { Acc=x;         } 
    public void setLvl(double l)    { Lvl=l;         } 

    public int getEcon()            { return Econ;   } 
    public int getFleet()           { return Fleet;  } 
    public int getTech()            { return Tech;   } 
    public int getExp()             { return Exp;    } 
    public int getAcc()             { return Acc;    } 
    public double getLvl()          { return Lvl;    } 

    public int compareTo(Datensatz d1)
    {
        if (this.getEcon() < d1.getEcon())
        {
            return -1;
        }
        else if (this.getEcon() == d1.getEcon())
        {
            return 0;
        }
        else
            return 1;
    }

    public String toString()
    {
        return "DatenSatz " + getEcon();
    }


    public static void main(String[] args)
    {
        List<Datensatz> list = new ArrayList<Datensatz>();

        Datensatz a = new Datensatz();
        a.setEcon(4);
        list.add(a);
        Datensatz b = new Datensatz();
        b.setEcon(3);
        list.add(b);
        Datensatz c = new Datensatz();
        c.setEcon(9);
        list.add(c);

        System.out.println(list);
        Collections.sort(list);
        System.out.println(list);
    }
}


class Player
{
}
 

Rogge

Aktives Mitglied
Oh, eine Musterlösung :D Danke schön. Ich hab bei mir das Interface an der völlig falschen Stelle implementiert, dann kann das auch gar nicht gehen. Oh man, ich hab echt noch viel zu lernen. *seuftz

Vielen Dank SlaterB, du hast diesem Elend ein Ende gemacht. Ich kann aber nicht garantieren, nun keine blöden Fragen mehr zu stellen. *grins
 

Rogge

Aktives Mitglied
maki hat gesagt.:
Dann musst du Klassen schreiben, die Comparator implementieren, das können auch innere Klassen sein.

Das hört sich einfacher an als es für mich ist.. und, du meintest, dass die Klassen Cmparable (nicht Comparator) implementieren müssen, oder?!

Ich habe etwas probiert, zwei neue Klassen geschrieben, die Datensatz erweitern. Diese Klassen definieren lediglich die Methode compareTo().

Code:
public class Econ extends Datensatz implements Comparable<Datensatz>{

   public int compareTo(Datensatz d){
    if (this.getEcon()<d.getEcon()) {
      return -1;
    } else
    if (this.getEcon()==d.getEcon()) {
      return 0;
    } else return 1;
  }
}


public class Fleet extends Datensatz implements Comparable<Datensatz>{

   public int compareTo(Datensatz d){
    if (this.getFleet()<d.getFleet()) {
      return -1;
    } else
    if (this.getFleet()==d.getFleet()) {
      return 0;
    } else return 1;
  }
}

Wenn ich dann eine Liste vom Typ Datensatz habe, und diese mit Datensätzen gefüllt ist... wie ist es mir dann jetzt möglich, diese Liste zu sortieren? Ich müsste doch die Liste vom Typ Econ oder Fleet erstellen, bevor ich sie sortieren kann, denn "Datenssatz" selbst implementiert nun nicht mehr das Interface. Ich könnte also die entsprechende Liste erstellen und alle Datensätze aus der Liste daten in die Listen econ und fleet kopieren. Dann kann ich sie sortieren. Das erscheint mir aber etwas umständlich. Da gibt es sicher einen anderen Weg, oder habe ich da schon wieder was falsch gemacht, maki?
 

Rogge

Aktives Mitglied
Code:
List<Datensatz> daten = new LinkedList<Datensatz>();
    List<Econ> econ = new LinkedList<Econ>();

    Datensatz d = new Datensatz();
    Econ e = new Econ();

    e=(Econ) d;

    econ=daten;

Das zeigt nochmal, was ich genau meine. econ= daten führt zu einem Fehler. Wie bereits gesagt ist es kein Problem, die Listen zu kopieren, sollte aber auch anders gehen, oder?
 
S

SlaterB

Gast
ne nun brauchst du Comparatoren,
siehe das Clubhaus-Beispiel in der Javainsel

Listing 11.7 com/javatutor/insel/util/ClubComparatorDemo.java
 

Rogge

Aktives Mitglied
Ich hab's...

Code:
class Econ implements Comparator<Datensatz>{
  public int compare(Datensatz d1, Datensatz d2){
    return d1.getEcon()-d2.getEcon();
  }
}

Aufruf erfolgt durch,

Code:
Collections.sort(daten,new Econ());

Und ich hab's ganz alleine abgeschrieben. :D *stolz auf mich bin* *lach*
 

Rogge

Aktives Mitglied
boah... ganze 4 Zeilen Code und dafür hab ich mich hier sogar gezofft und den halben Tag gebraucht. *ganz laut lache*
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
B Liste sortieren? Java Basics - Anfänger-Themen 4
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
P Liste sortieren verschiedener generischer Typen Java Basics - Anfänger-Themen 4
J Liste der Größe nach sortieren Java Basics - Anfänger-Themen 2
P Liste nach Datum sortieren Java Basics - Anfänger-Themen 7
B CSV-Datei auslesen, in Liste speichern und sortieren Java Basics - Anfänger-Themen 20
M Sortieren von einer Liste - zwei zugehoerige Variablen Java Basics - Anfänger-Themen 5
E Erste Schritte Sortieren von Objekten in doppelt-verlinkter Liste Java Basics - Anfänger-Themen 9
H 2 verschiedene Objekte in Liste mit Compareable sortieren Java Basics - Anfänger-Themen 7
D Liste mit interator sortieren Java Basics - Anfänger-Themen 24
J Collections Auf ein bestimmtes Objekt in der Liste zugreifen und Werte verändern + Anschließend Sortieren... Java Basics - Anfänger-Themen 8
C verkette liste sortieren? Java Basics - Anfänger-Themen 7
J Liste von Integers mit Selection Sort sortieren Java Basics - Anfänger-Themen 3
R compareTo Liste sortieren Java Basics - Anfänger-Themen 5
H Liste mit Objekten sortieren Java Basics - Anfänger-Themen 2
G Problem beim Sortieren einer Liste Java Basics - Anfänger-Themen 20
E JTable Sortiere und dazu gleichzeit die Liste Sortieren Java Basics - Anfänger-Themen 2
P liste sortieren Java Basics - Anfänger-Themen 2
A Liste lexikografisch sortieren Java Basics - Anfänger-Themen 3
G Liste mit Artikeln nach ID sortieren Java Basics - Anfänger-Themen 6
kulturfenster Rectangle - Liste sortieren Java Basics - Anfänger-Themen 7
T 2 Arrays in 1 Liste sortieren Java Basics - Anfänger-Themen 17
B Liste sortieren mit Comparator Java Basics - Anfänger-Themen 2
A Wie füge ich eine Liste so in eine andere Liste ein, dass der Index der Elemente derselbe bleibt? Java Basics - Anfänger-Themen 7
A Wort-Liste importieren Java Basics - Anfänger-Themen 11
G Liste schneller durchsuchen Java Basics - Anfänger-Themen 4
R Liste in Variable speichern Java Basics - Anfänger-Themen 6
R Liste und Arrays Java Basics - Anfänger-Themen 12
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
M Verkettete Liste Java Basics - Anfänger-Themen 1
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
E Suchfunktion in einer Liste Java Basics - Anfänger-Themen 39
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
f3mys Objektwerte in Liste speichern und wieder abrufen Java Basics - Anfänger-Themen 23
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
K Warum ist die binäre Suche bei der verketteten Liste nicht so effektiv? Java Basics - Anfänger-Themen 3
I 2D-Array Position der Liste ausgeben. Java Basics - Anfänger-Themen 2
I Liste von Infos von einer eigenen Annotation in Liste speichern Java Basics - Anfänger-Themen 0
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
thor_norsk Verkette Liste Java Basics - Anfänger-Themen 27
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
B GUI extension mit einer Liste verbinden Java Basics - Anfänger-Themen 1
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
M Java Liste streamen Java Basics - Anfänger-Themen 10
AmsananKING Aussortierung einer Liste Java Basics - Anfänger-Themen 8
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
A Korrigierte <String> Liste zurückgeben Java Basics - Anfänger-Themen 22
S Kann nicht auf die Liste zugreifen mit der Methode!? Java Basics - Anfänger-Themen 3
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
I Liste gruppieren nach Monat? Java Basics - Anfänger-Themen 5
districon Element in Liste einfügen Java Basics - Anfänger-Themen 1
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
Y Knoten an einem gegebenen Index aus einer Liste entfernen. Java Basics - Anfänger-Themen 6
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
Gaudimagspam Linked Liste Java Basics - Anfänger-Themen 4
Z Liste umkehren Java Basics - Anfänger-Themen 1
S Eine Liste kopieren Java Basics - Anfänger-Themen 13
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13
java3690 Liste mit zufälligen zahlen füllen Java Basics - Anfänger-Themen 27
J Element aus Liste nehmen Java Basics - Anfänger-Themen 3
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
P Was genau bringt mir es ein Array in eine Liste zu bringen Java Basics - Anfänger-Themen 3
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
P Verschachtelte Array Liste Java Basics - Anfänger-Themen 2
H Liste speichern. Was lässt sich verbessern? Java Basics - Anfänger-Themen 7
P Performance Array und Liste Java Basics - Anfänger-Themen 13
M QuickSort und Liste Java Basics - Anfänger-Themen 6
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben