Java Zugriff auf einzelne Element einer Liste in einer Liste

Nebuk

Lieutenant Pro
🎅Rätsel-Elite ’11
Registriert
Sep. 2009
Beiträge
936
Hallo zusammen

Folgende Situation:
Ich habe in einer Liste (Vector) [heisst z.B. kleineListe] mehrere Elemente (Strings) gespeichert. Diese Liste ist wiederum in einer Liste (Vector) [heisst z.B. grosseListe] gespeichert. Jede kleineListe ist also wiederum ein Element in der grossen Liste.

Es sollte, wenn man es nun ausgibt, wie folgt aussehen:

[[01, ybybyb, ybybb.yb], [02, xcxcxc, xcxxc.xc], [03, wdwdwd, wdwdd.wd], .... ]

Wie kann ich nun auf die einzelnen Teilelemente zugreifen?

Zum Beispiel im Element 0 auf das Element 1 und 2.
Also "ybybyb" und "ybybb.yb"

Für Lösungsvorschläge wäre ich sehr dankbar :)

Gruss Nebuk
 
Versuchs mal mit grosseListe.elementAt(0).elementAt(1) für Element 1 in der kleinen Liste 0 bzw. grosseListe.elementAt(0).elementAt(2) für Element 2 in der kleinen Liste 0.
 
Danke für die Antworten

Funktionieren aber alle nicht. Bzw. ich kann beide nicht ausführen.
Hat noch jemand eine Idee? :)
 
wenn du den JS ausführst mach doch try catch (x) { alert(x.message);}
Wird eine Exception geworfen, dann siehst du wo ungefähr!
 
Du hast in deinem Code die Listen-Elemente schon unter Anführungszeichen gesetzt oder?

Edit:
Beispiel:

var liste = [['text11', 'text12'], ['text21', 'text22', 'text23']];

alert(liste); //Ausgabe: 'text11', 'text12', 'text21', 'text22', 'text23'
alert(liste[1]); //Ausgabe: 'text21', 'text22', 'text23'
alert(liste[0][1]); //Ausgabe: 'text12'
 
Zuletzt bearbeitet:
@roker002: Weshalb muss ich da etwas abfangen? Versteh ich jetzt grad nicht, was mir das bringt?

@abcb12: Die Einträge sind alle als String deklariert und auch als solches eingetragen. (also in ""). Daran liegts, so wie ich das beurteile, bestimmt nicht.

edit: Was ist "alert" überhaupt für eine Funktion? oO sieht irgendwie wie PHP aus...
 
kriegst du überhaupt irgendwas angezeigt? Ich meine wenn du Alert machst...

Try Catch sorgt dafür dass du mögliche errors abfangen kannst und sichtbar machen kannst, da an sich kein error geworfen wird, wenn irgendwas in JS passiert!
 
Verwende eventuell mal einen JavaScript-Debugger, oder einen Browser, der dir Fehler im JavaScript-Code direkt anzeigt.

alert zeigt eine MessageBox im Browser-Fenster an, mit dem übergebenen Wert als Inhalt.
 
Zuletzt bearbeitet:
alert kann ich nicht ausführen. Diese Methode gibts nicht (wenigstens finde ich sie bei mir nicht und sie lässt sich auch nicht importieren). Was sollte alert machen?

Try/Catch kenne ich z.B. schon von den MySQL Abfragen in JAVA. Dort lassen sich ja damit auch die MySQL Feher abfangen und anzeigen.

Angezeigt bekomme ich schon etwas, aber nicht das, was ich haben möchte. Sprich die ganzen Elemente
(also wie oben beschrieben [01, ybybyb, ybybb.yb])
 
So, ich habe mich nach vielen Jahren stillen Lesens jetzt extra für dich registriert ;)

Du redest von Java, nicht von JavaScript, oder?

Es wäre nicht schlecht, wenn du mal beschreiben könntest, was genau an dem Vorschlag von JesusRulz nicht funktioniert, denn eigentlich sollte es das sein.
Meine Vermutung: Hast du die Listen mit Datentyp initialisiert?

Hier wäre mal ein Beispiel, das nicht funktioniert:

Code:
Vector grosseListe = new Vector();
Vector kleineListe = new Vector();
        
kleineListe.add("Hello");
kleineListe.add("World");;
grosseListe.add(kleineListe);
grosseListe.get(0).get(1);

Das erzeugt einen Compilerfehler mit "Cannot find Symbol: method get()"
Besser:

Code:
Vector<Vector<String>> grosseListe = new Vector<Vector<String>>();
Vector<String> kleineListe = new Vector<String>();

kleineListe.add("Hello");
kleineListe.add("World");
grosseListe.add(kleineListe);
grosseListe.get(0).get(1);

Falls das dein Problem löst, versuch mal herauszufinden was der Unterschied ist. Falls nicht, vergiss es einfach ;)
 
Ich weiss jetzt nicht ob wir vom selben sprechen. Ich meine Java, nicht Java-Script oO
 
Gut, war mein Fehler. Ich dachte du bist in JavaScript unterwegs, da die Notation die du in deinem ersten Posting für die Liste angegeben hast, eher typisch für JavaScript ist.
 
Zuletzt bearbeitet:
Hehe :)

@DarkwingDuck: Toll, dass du dich extra für mich registriert hast! :D

Initialisiert habe ich alles. Wäre da nicht ein Hinweis von wegen NullPointer etc.?

Was bei der 1. Variante nicht funktioniert ist die zweite get()-Anweisung. Diese kann ich dahinter nicht anhängen.
Bei der zweiten Variante kann ich dies nicht "bauen": "Vector<Vector<String>>" und habe unten den selben Fehler wie bei der ersten Variante (get()

Edit: Am Liebsten würde ich mal den ganzen Code reinposten, aber das sind über 350 Zeilen und wird als Fenster dargestellt -> ist ein Schulprojekt ^^

So kurz in einer Sitzung... hoffe aber trotzdem auf weitere Lösungsvorschläge xD
 
Zuletzt bearbeitet:
Falls du nur jeweils einen untypisierten Vector verwendest, musst du einen Typecast benutzen, wenn du auf Elemente des "geschachtelten" Vectors zugreifen willst, wie hier:
Code:
  public static void main(String[] args) {

        Vector v1 = new Vector();
        Vector v2 = new Vector();

        v1.add("abc");
        v1.add("bcd");

        v2.add(v1);
        v2.add(v1);

        System.out.println(v2.elementAt(0));
        System.out.println(((Vector)v2.elementAt(1)).elementAt(1));
        
    }
 
Wenn ich den Vorschlag von r0b0t umsetze, bekomme ich folgende Fehlermeldung:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 0
	at java.util.Vector.elementAt(Unknown Source)

@DarkwingDuck
Den Vecor von hier:
Code:
import java.util.Vector;


EDIT:

Falls das was hilft: Um das gesamte Element auszugeben bzw. zu suchen, nehme ich diesen Code:
Code:
System.out.println(ganzeListe.get(jl.getSelectedIndex()));

Ziel sollte aber eben sein, die einzelnen Elemente auszulesen um sie nachher weiter zu verarbeiten.
 
Zuletzt bearbeitet:
Gibt es denn einen Grund, weshalb du Vector benutzen mußt? Die Klasse ist als deprecated (mißbilligt) eingestuft und sollte nach Möglichkeit nicht mehr verwendet werden - ihr offizieller Nachfolger ist java.util.ArrayList. Die hat auch den Vorteil, daß sie generisch ist, d.h. ein Listenobjekt kennt den Typen seiner Inhaltsobjekte, und du mußt nicht casten.

Warum r0b0ts Code nicht läuft, kann ich dir ohne Debuggen leider nicht sagen.
 
ArrayIndexOutOfBoundsException: 1 >= 0

Na, dann greifst du auf einen Index zu, den dein Vector zum Zugriffszeitpunkt (noch?) nicht hat.

oder hätte ich statt
Code:
System.out.println(((Vector)v2.elementAt(1)).elementAt(1));
besser
Code:
System.out.println(((Vector)v2.elementAt(0)).elementAt(0));
schreiben sollen? War doch nur ein Beispiel.
 
Zuletzt bearbeitet:
@NullPointer: Wenn ich eine ArrayList nehme, funktioniert das ganze in der JList nicht. Kann aber sein, dass da was anderes faul ist. Meine aber irgendwo gehört zu haben dass es nur (?) mit Vector funktioniert.

@r0b0t: Ich erstelle zu Testzwecken eine Vector-Liste diese wird zwischengespeichert und in die JList eingetragen. Diese Liste ist zum Beispiel 57 Elemente gross. Wenn ich nun eben den Code anpasse und das 0. Element jeweils auswähle, sollte man meine, dass da etwas drinnen ist. Das scheint aber trotzdem nicht zu funktionieren. -.-
 
Zurück
Oben