Geschachtelte Liste

  • Themenstarter Themenstarter Hummer
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
H

Hummer

Gast
Hallo,

ich möchte in einer LinkedList ein Array speichern und schaffe es nicht dieses Array später auswerten zu können.
es werden mir immer die letzten zwei gespeicherten Werte im Array ausgegaben.

LinkedList list = new LinkedList();
String[] data = new String[2];

data[0] = "class";
data[1] = "main";
list.add( data );

data[0] = "id";
data[1] = "Hauptfeld";
list.add( data );

Iterator iter = data.iterator();
while( iter.hasNext() ) {
//- Und wie macht man das jetzt, oder hab ich bereits zuvor
//- einen Denkfehler?
}

Damit meine ich die letzten zwei Werte "id" und "hauptfeld".
 
Du musst das Array immer wieder neu erzeugen, da Du sonst die
darin enthaltenen Werte überschreibst.
Code:
LinkedList list = new LinkedList();

String[] data = new String[2]; 

data[0] = "class"; 
data[1] = "main"; 
list.add( data ); 

data = new String[2]; // <-- neue Instanz des Arrays
data[0] = "id"; 
data[1] = "Hauptfeld"; 
list.add( data ); 

Iterator iter = data.iterator(); 
while( iter.hasNext() ) { 
  String array[] = (String[])iter.next();
  ...
}
 
Hummer hat gesagt.:
Hallo,

ich möchte in einer LinkedList ein Array speichern und schaffe es nicht dieses Array später auswerten zu können.
es werden mir immer die letzten zwei gespeicherten Werte im Array ausgegaben.

LinkedList list = new LinkedList();
String[] data = new String[2];

data[0] = "class";
data[1] = "main";
list.add( data );

data[0] = "id";
data[1] = "Hauptfeld";
list.add( data );

Iterator iter = data.iterator();
while( iter.hasNext() ) {
//- Und wie macht man das jetzt, oder hab ich bereits zuvor
//- einen Denkfehler?
}

Damit meine ich die letzten zwei Werte "id" und "hauptfeld".

Das liegt daran, daß du immer DASSELBE array in die Liste einfügst dessen
Inhalt mit den unterschiedlichen Werten überschrieben wird.

Du muß die Zeile "String[] data = new String[2];" nach dem Aufruf der add-Methode
nochmal schreiben um ein "frisches" Array zu erhalten. Oder einfacher:

Code:
LinkedList list = new LinkedList();
list.add(new String[2] {"class", "main"});
list.add(new String[2] {"id", "Hauptfeld"});
 
Okay danke,

aber das wird mir auf dauer zu viel könnte man sowas auch anders Regeln?
 
Hummer hat gesagt.:
Okay danke,

aber das wird mir auf dauer zu viel könnte man sowas auch anders Regeln?

:autsch: "Das wird mir auf Dauer zuviel" :autsch:

Was wird dir zuviel? Die Stringarrays der Liste hinzufügen?
Wie sind die Daten denn gegeben? Vorher festgelegt oder werden sie erzeugt?

Im ersten Fall würde ich sie in einer Schleife einlesen. Z.B.

Code:
public LinkedList create() {
  String[][] daten = new String[][] {
    {"Name1", "Wert1"},
    {"Name2", "Wert2"},
    {"Name3", "Wert3"} // ...
  };
  LinkedList list = new LinkedList();
  for (int i=0; i < daten.length; ++i)
    list.add(daten[i]);
  return list;
}

(Weiß im Moment nicht ob es hier auch eine Methode "addAll" gibt)

Alternativ kannst du die Daten auch aus einer Textdatei einlesen.

Im zweiten Fall bekommst du die Daten eh schon von irgendwoher geliefert.

Was genau ist dir "auf Dauer zuviel" ?

Leroy42
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben