Geschachtelte Liste
Sep
- java
Hallo,
ich würde gerne ein verschachtelte Liste fertigen.
Es soll in einer Liste diverse Attribute für eine HTML-Formatierung
enthalten sein. Weil die Anzahl der Elemente verschieden ist, soll
versucht werden unter einem Punkt in einer LinkedList jeweils zwei
Definitionen zu speichern. Einmal den Name (z.B. class) und zweitens
den Wert zu dem Namen (z.B. main).
Ich hab gedacht ich könnte das über ein Array in der Liste fertigen
aber leider schaffe ich es nicht das Array dann vernünftig auswerten
zu können. Ich zeige euch mal ein kleines Bsp., welches ich zum
Testen entworfen habe:
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?
}
Hallo,
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() ) {
String values = (String[])iter.next();
System.out.println(values[0] + " " + values[1]);
}
(Vorsicht! Aus dem Kopf programmiert! :-))
Ist es das, was du willst? Wenn nicht, habe ich die Frage nicht verstanden...
Irgendwie erscheint mir eine Hashtable möglicherweise sinniger. Schau
dir mal die Klasse java.util.Hashtable an. (Aber Vorsicht, die Werte
darin werden nicht in der Reihenfolge gespeichert, in der sie eingefügt
werden.)
Gruß
Slyh
Hallo,
hab deinen Tipp noch nicht ausprobiert. Hab auch schonmal an eine
Hashtable gedacht nur da weiß ich nicht wie ich den Namen des Keys
und den dazugehörigen Wert verwenden kann. Hab mich auch umgeschaut
aber nichts passendes gefunden.
Iterator iter = data.iterator();
while( iter.hasNext() ) {
String values = (String[])iter.next();
System.out.println(values[0] + " " + values[1]);
Leider wird mir auch so nur zweimal "id" und "name" ausgegeben.
moin Sep :)
Iterator iter = data.iterator();
while( iter.hasNext() ) {
String values = (String[])iter.next();
System.out.println(values[0] + " " + values[1]);Leider wird mir auch so nur zweimal "id" und "name" ausgegeben.
Du hast doch nur zwei eingefügt *wirr*
Aber falls du auf die Reihenfolge keine Wert legst, würde ich dir tatsächlich ein Hashmap ans Herz legen.
Und zwar füllst du das so:
HashMap map=new HashMap();
map.put("class", "main");
map.put("id"", "Hauptfeld");
und liest es so wieder aus:
Iterator it=map.keySet().iterator();
while(it.hasNext()){
String key=it.next().toString();
String value=map.get(key).toString();
System.out.println(key+" --> "value);
}
sehr viel einfacher als das rumhantieren mit Array und Liste - oder? ;)
liebe Grüße aus Berlin
lina-
PS: keine Garantie auf 100% korrekte Syntax... hab ich nur ausm Kopf zusammengezimmert.
sehr viel einfacher als das rumhantieren mit Array und Liste - oder? ;)
liebe Grüße aus Berlin
lina-
Danke Lina,
genau sowas hab ich gesucht. Hab mir auch schon gedacht ein Hashtable
zu nutzen wusste nur nicht wie man an den Key als String kommt. Deine
Idee war super und gefällte mir.
Gruß Sep
Deine Idee war super und gefällte mir.
.oO(und wieso krieg ich dann kein "hilfreich"? Nie krieg ich ein "hilfreich"... menno)
brummelige Grüße aus Berlin
lina-
versteh jetzt nicht ganz was du meinst. hinter meiner aussage steckt
doch die tatsache, dass du sehr hilfreich warst. ich dachte
ich drücke es dadurch nur noch stärker aus als ein einfaches
hilfreich.
nochmals danke, warst sehr HILFREICH
*wirr* sep
moin sep :)
versteh jetzt nicht ganz was du meinst. hinter meiner aussage steckt
doch die tatsache, dass du sehr hilfreich warst. ich dachte
ich drücke es dadurch nur noch stärker aus als ein einfaches
hilfreich.nochmals danke, warst sehr HILFREICH
*wirr* sep
*g* weiss ich doch.. hatte wohl den smily vergessen ;)
Irgendwie isses so, dass ich ab und an gute Hinweise gebe aber nie klickt einer auf "hilfreich" - da fängt man irgendwann an, sich zu wundern *g* und gerade heute wo sowieso "lina- wundert sich tag" ist.
liebe Grüße aus Berlin
lina-
klickt einer auf "hilfreich" -
Wo kann man denn hier auf "Hilfreich" klicken? Ich glaub ich bin blind.
moin Sep :)
Wo kann man denn hier auf "Hilfreich" klicken? Ich glaub ich bin blind.
hmmm? achso.. ich vergaß: wenn man nicht registriert ist, kann man keine Bewertung vornehmen.
Ich nehme alles zurück, behaupte das Gegenteil und stelle mich in die Ecke um mich zu schämen ;)
.oo(und wer hat da jetzt auf "hilfreich" geklickt? Ohweia... nich dass jetzt alle glauben ich wars selber *bibber*)
liebe Grüße aus Berlin
lina-
Dann muss ich mich wohl mal registrieren!?
Aber dann unter dem Realname damit ich das nachholen kann.
gruß fabian ;)
Hallo,
Leider wird mir auch so nur zweimal "id" und "name" ausgegeben.
Äh, ja, klar. Das hab ich übersehen:
data[0] = "class";
data[1] = "main";
list.add( data );
»»
data[0] = "id";
data[1] = "Hauptfeld";
list.add( data );
Du legst zweimal _dasselbe_ Array in der 'list' ab. Arrays sind in Java
Objekte und werden daher wie jedes andere Objekt auch als Referenz
übergeben. D.h. daß die add-Methode in beiden Fällen eine Referenz auf
dasselbe Array übergeben bekommt. Nur die Referenz wird in der 'list'
abgelegt, nicht aber die konkreten Werte.
Wenn du jetzt also über list.get(int) (bzw. eben der Iterator) den
Wert wieder versuchst aus der 'list' rauszuholen, wird dir nur wieder
eine Referenz auf das Array zurückgeliefert. In dem Array stehen die
Werte drin, die du zuletzt hineingeschrieben hast. In deinem Fall ist
dies "id" und "Hauptfeld".
Du hättest nach deinem zweiten "list.add(data)"-Aufruf auch nochmal
z.B. date[0] = "lirumlarum" schreiben können. Dann wäre die Ausgabe
eben "liarumlarum Hauptfeld".
Wenn dir das nicht klar ist/wurde, solltest du dich dringend mit
Referenzen beschäftigen. Anders wirst du mit Java nicht glücklich
werden...
Gruß
Slyh
Irgendwie erscheint mir eine Hashtable möglicherweise sinniger.
Eine Hashtable würde ich heute nicht mehr verwenden. Ist außerdem komplett synchronized, wenn mich recht entsinne.
Hallo,
Irgendwie erscheint mir eine Hashtable möglicherweise sinniger.
Eine Hashtable würde ich heute nicht mehr verwenden. Ist außerdem komplett synchronized, wenn mich recht entsinne.
Kommt drauf an, was man macht. Wenn man was sychronisiertes braucht,
nimmt man besser eine Hashtable. Wieso sollte man sie "heute" nicht
mehr verwenden?
Im konkreten Beispiel ist vielleicht eine HashMap besser. (Ich dachte,
ich hätte "erscheint mir eine Hastable _oder etwas ähnliches_
möglicherweise sinniger" geschrieben. Hab ich wohl nicht. Oder war das
in einem anderen Posting? Naja, sei's drum...)
Gruß
Slyh
moin :)
Irgendwie erscheint mir eine Hashtable möglicherweise sinniger.
Eine Hashtable würde ich heute nicht mehr verwenden. Ist außerdem komplett synchronized, wenn mich recht entsinne.
Wieso denn das bitte? Für das Beispiel ist ein Hashtable genau das richtige. So wars gestern und heute wirds nicht anders sein.
liebe Grüße aus Berlin
lina-