Liste oder Schlange?

Status
Nicht offen für weitere Antworten.

Rogge

Aktives Mitglied
Hallo,

ich habe einen eigenen Datentyp erstellt, der aus mehreren Int-Werten, einem String und einem Double besteht. Ich möchte davon jetzt eine Liste oder eine Schlange oder LinkedList, was es da so gibt, von machen. Ziel ist die Überprüfung einzelner Objekte (ob sie vorhanden sind), sowie die Sortierung der Liste nach dem ausgewählten Int-Wert.
Was bietet sich dafür an, und wo finde ich eine gute Erklährung für die Andwendung? Bei Galileo-Computing (Java ist auch eine Insel 6) wurde mir eher weniger geholfen.

Danke für die Hilfe,
Rogge
 

Marco13

Top Contributor
Die Daten kannst du in eine List packen. Ob das nun eine LinkedList oder eine ArrayList oder sonstwas ist, ist egal.
Code:
List list = new LinkedList();
add(objekt0);
add(objekt1);
add(objekt2);
vs.
Code:
List list = new ArrayList();
add(objekt0);
add(objekt1);
add(objekt2);

Sortieren kannst du sie mit
Collections.sort(list, comparator);
Wobei du den passenden Comparator erstellen musst, der zwei der Objekte nach dem gewünschten int-Wert vergleicht.

Schau dazu auch mal in die FAQ: http://www.java-forum.org/de/viewtopic.php?p=251024
 

Rogge

Aktives Mitglied
Hallo Marco13,

danke für die Antwort. Das mit der Liste funktioniert auch alles bestens. Jetzt habe ich nur ein Problem, wieder an die Daten zu kommen...

Mein erstellter Datentyp sieht so aus:
Code:
public class Datensatz {
  private int Id, Econ, Fleet, Tech, Exp, Acc;
  private String Player;
  private double Lvl;

  public void setId(int x)        { Id=x;          }
  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 setPlayer(String s) { Player=s;      }
  public void setLvl(double l)    { Lvl=l;         }

  public int getId()              { return Id;     }
  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 String getPlayer()       { return Player; }
  public double getLvl()          { return Lvl;    }
}

Das Programm das damit arbeitet ist teilweise hier abgebildet:
Code:
  public static void main(String[] args) throws FileNotFoundException, IOException{
    String temp="";
    int i=0, x=0;

    Scanner s = new Scanner(new File("C:\\AE\\Data\\06102007.txt"));
    Datensatz DS = new Datensatz();
    List daten = new LinkedList();
    Scanner tmp;
    
    do{
      temp=s.nextLine();
      tmp = new Scanner(temp).useDelimiter( "\\s*\t\\s*" ); // Tab als Trenner
      DS.setId(tmp.nextInt());                       // ID
      tmp.next();                                    // Title nicht
      DS.setPlayer(tmp.next());                      // Player
      tmp.next();                                    // Account nicht
      DS.setLvl(Double.valueOf(tmp.next()));         // Lvl
      DS.setEcon(tmp.nextInt());                     // Econ
      DS.setFleet(tmp.nextInt());                    // Fleet
      DS.setTech(tmp.nextInt());                     // Tech
      DS.setExp(tmp.nextInt());                      // Exp
      DS.setAcc(tmp.nextInt());                      // Acc
      daten.add(DS); // Datensatz hinzufügen
    }while(s.hasNextLine());

    DS=daten.get(0);
    System.out.println(DS.getPlayer());
  }

Und in der Letzten Zeile ist ein error:
Compiliere C:\AE\Data\Stats.java mit Java-Compiler
Stats.java:48:17: incompatible types
found : java.lang.Object
required: Datensatz
DS=daten.get(0);
^
???:L
Kannst du mir da noch weiterhelfen?
 

Rogge

Aktives Mitglied
So gehts...

Code:
DS=(Datensatz) daten.get(0);

Zudem habe ich noch einen weiteren Fehler beseitigt. Ich habe vergessen immer einen neuen Datensatz zu erstellen. So enthielt die Liste immer den gleichen. War natürlich Blödsinn. Der neue Code sieht dann also so aus...

Code:
    Datensatz DS;
    List daten = new LinkedList();
    Scanner tmp;
    
    do{
      temp=s.nextLine();
      tmp = new Scanner(temp).useDelimiter( "\\s*\t\\s*" ); // Tab als Trenner
      DS=new Datensatz(); // neuen Datensatz
      DS.setId(tmp.nextInt());                       // ID
      tmp.next();                                    // Title nicht
      DS.setPlayer(tmp.next());                      // Player
      tmp.next();                                    // Account nicht
      DS.setLvl(Double.valueOf(tmp.next()));         // Lvl
      DS.setEcon(tmp.nextInt());                     // Econ
      DS.setFleet(tmp.nextInt());                    // Fleet
      DS.setTech(tmp.nextInt());                     // Tech
      DS.setExp(tmp.nextInt());                      // Exp
      DS.setAcc(tmp.nextInt());                      // Acc
      daten.add(DS);
    }while(s.hasNextLine());

    DS=(Datensatz) daten.get(0);
    System.out.println(DS.getPlayer());
 

HoaX

Top Contributor
daten.get(0) gibt dir ein Object zurück, aber diene Variable ist vom typ Datensatz. also entweder casten oder einfach gleich generics verwenden
 

Marco13

Top Contributor
Die in diesem Fall zu verwenden ist einfach:

Vorher:
Code:
List daten = new LinkedList(); 
daten.add(new Datensatz());
//Datensatz d = daten.get(0); // Geht nicht
Datensatz d = (Datensatz)daten.get(0); // Geht, mit cast

Nachher:
Code:
List<Datensatz> daten = new LinkedList<Datensatz>(); 
daten.add(new Datensatz());
Datensatz d = daten.get(0); // Geht, auch ohne cast!
 

Rogge

Aktives Mitglied
Noch eine neue Frage:

Mit welchem Befehl kann ich den Inhalt der Liste ausgeben, bzw. von Element zu Element sehen?

Hierdurch bekomme ich ein IndexOutOfBounds-Error...

Code:
    i=0;
    while(newPl.get(i++)!=null){
      System.out.println(newPl.get(i).getId()+": "+newPl.get(i).getPlayer());
    }
 
M

maki

Gast
private int Id, Econ, Fleet, Tech, Exp, Acc;
private String Player;
private double Lvl;
Das stimmt mit deinen nicht: Instanzvariablen schreibt man klein und ausführlich (steht Acc für account?).

Anstatt selbst einen Iterator zu holen und selbst zu iterieren, könntest du auch eine for each Schleife benutzen ;)
 

Rogge

Aktives Mitglied
Ach naja die Groß- und Kleinschreibung... geht alles, man muss es nur durchziehen. Scheint bei mir nicht ganz zu klappen... ;)

Du, wir sind hier noch im Anfänger-Breich. Magst mir die Syntax von "for each" mal aufschreiben bitte?! :D
 
M

maki

Gast
for "each":
Code:
    for (Datensatz ds : daten) {
        System.out.println(ds);
    }

iterator:
Code:
    Datensatz ds;
    Iterator it= daten.iterator(); 

    while(it.hasNext()) {
        ds= it.next();
        System.out.println(ds);
    }
 

Rogge

Aktives Mitglied
Wow, vielen Dank. Das läuft escht super.

Außer bei Iterater it= daten.... musste Iterater<Datensatz> it= daten.... geschrieben werden.

Echt, das ist so einfach. Und ich zerbreche mir stundenlang darüber den Kopf. Anscheinend habe ich das föllig falsche Buch. *anderes besorgen geht*
 
M

maki

Gast
Außer bei Iterater it= daten.... musste Iterater<Datensatz> it= daten.... geschrieben werden.
Korrekt, hast mich erwischt ;)

.. und falls du keine Generics verwendest, muss der Rückgabetyp des iterators natürlich gecastet werden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Liste in Variable speichern Java Basics - Anfänger-Themen 6
R Liste und Arrays Java Basics - Anfänger-Themen 12
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
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
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
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
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
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
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
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
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
CptK Koordinate in Liste suchen Java Basics - Anfänger-Themen 20
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
M Array liste Verdrehen Java Basics - Anfänger-Themen 8
A Verkettete Liste Java Basics - Anfänger-Themen 2
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
S IndexOutOfBoundsException beim hinzufügen eines Elements zu einer Liste Java Basics - Anfänger-Themen 11
B Liste sortieren? Java Basics - Anfänger-Themen 4
O Anonyme Klasse einer Liste erstellen Java Basics - Anfänger-Themen 7
B SWAP List; Liste neu anordnen Java Basics - Anfänger-Themen 4
B CSS Klassen in eine Liste schreiben Java Basics - Anfänger-Themen 4
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
L verkettete Liste Java Basics - Anfänger-Themen 15
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
O ADT Liste z. B. Java Basics - Anfänger-Themen 15
B sortierte Liste Java Basics - Anfänger-Themen 4
O Knoten und Liste verarbeitung Java Basics - Anfänger-Themen 20
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
J Eine Liste von Listen erstellen Java Basics - Anfänger-Themen 11
A Einträge aus Tupeln nach Regeln in Liste speichern Java Basics - Anfänger-Themen 8
Queiser Liste zurückgeben Java Basics - Anfänger-Themen 7
T Collections Geeignete Collection/Liste/Datenbank Java Basics - Anfänger-Themen 17
S spezielle Wörter aus Liste entfernen Java Basics - Anfänger-Themen 2
H Verkettete Liste Java Basics - Anfänger-Themen 7

Ähnliche Java Themen


Oben