Java Zugriff auf einzelne Element einer Liste in einer Liste

Hmm, kurze Frage bevor wir weitermachen: Welche Version des JDK benutzt du? Dass einige der hier geposteten Beispiele (mein zweites eingeschlossen) nicht funktionieren, kommt mir doch sehr eigenartig vor.
 
is JList nicht ein swing baustein ?
Und wieso werte übergeben, ich würde einfach direkt das ListModel implementieren und dann statt Vectoren eine ArrayList nehmen.
Und das schon die erste Lösung nicht geklappt hat kann ich mir auch absolut nicht erklären.
Kannst du wenigstens mal den Code zum erzeugen der Vectoren posten ?

Edit:
Code:
Vector<String> v1 = new Vector<String>();
        Vector<Integer> v2 = new Vector<Integer>();
        Vector<Vector<?>> vListe = new Vector<Vector<?>>();

        v1.add("Moin");
        v1.add("Hallo");

        v2.add(new Integer(3));
        v2.add(new Integer(5));

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

        for(int i = 0; i < vListe.size(); i++) {
            //System.out.println(String.valueOf(i) + ": " + vListe.get(i));
            Vector<?> vt = vListe.get(i);
            System.out.println("Vector[" + i + "]:" );
            for(int j = 0; j < vt.size(); j++) {
                System.out.println("\t" + vt.get(j));
            }
        }

erzeugt bei mir :

Code:
Vector[0]:
        Moin
        Hallo
Vector[1]:
        3
        5

wenn du im code das Kommentar entfernst hast schon fast was du brauchst.
Also die ausgabeform.
Ansonsten stellt Vector auch einen Iterator zur verfügung oder du Überschriebst in Vector die toString() Methode.
 
Zuletzt bearbeitet: (Code eingefügt)
Also ich verwende folgendes: jdk1.6.0_20 in der Arbeit und die 22 zuhause.

Habe es eben noch zuhause ausprobiert und dort funktioniert die Variante mit

Code:
System.out.println(((Vector)ganzeListe.elementAt(0)).elementAt(0));

Damit hat sich das Problem erledigt. Danke für die Hilfe, so läuft es tatsächlich :)
Da sieht man mal wieder, dass sich updaten lohnt ^^

Danke an alle!
 
Schön, dass es funktioniert, aber nur noch mal zur Klarstellung:
Dass es auf der Arbeit nicht funktioniert, liegt bestimmt nicht an den Versionsunterschieden zwischen 6.0_20 und 6.0_22. Du hattest ja einen Laufzeitfehler (ArrayIndexOutOfBoundsException) bekommen. Das bedeutet ja, dass der Compiler deinen Code bereits akzeptiert und die VM ihn ausgeführt hat. Nur die Daten, die du zuhause verarbeitest müssen sich von denen auf deiner Arbeit irgendwie unterscheiden, so dass es dort zu diesem Laufzeitverhalten kommt.
 
Hm... ich habe es nun auch auf dem Laptop versucht und auch dort funktioniert es (ab der aktuellen Version ^^). Geändert habe ich aber an dem Code nichts mehr. Am Samstag werde ich jedenfalls mal meinen Lehrer fragen woran es sonst noch liegen könnte. Vielleicht findet er noch was (bestimmt sogar :D)

Aber das hier hat mir schon sehr weiter geholfen, danke nochmals an alle die hier geholfen haben!
 
Code:
import java.util.List;
import java.util.Vector;

public class Main {
	public static void main(String[] args) {
		List<List<String>> vGross = new Vector<List<String>>();
		
		vGross.add(new Vector<String>());
		vGross.add(new Vector<String>());
		vGross.add(new Vector<String>());
		
		vGross.get(0).add("Hallo");
		vGross.get(0).add("Welt!");
		vGross.get(1).add("Nummer");
		vGross.get(1).add("Zwei!");
		vGross.get(2).add(":-)");
		
		System.out.print("[");
		for(List<String> v : vGross){
			System.out.print("[ ");
			for(String s : v)
				System.out.print(s + " ");
			System.out.print("]");
		}
		System.out.print("]");
	}
}

Ausgabe: [[ Hallo Welt! ][ Nummer Zwei! ][ :-) ]]

Möchtest du die Strings mit Kommas trennen, müssen wir ohne die for-each-Schleife auskommen

Code:
		System.out.print("[");
		for(int i = 0; i < vGross.size(); ++i){
			System.out.print("[");
			List<String> vKlein = vGross.get(i);
			for(int j = 0; j < vKlein.size(); ++j){
				System.out.print(vKlein.get(j));
				if(j < vKlein.size() - 1)
					System.out.print(", ");
			}
			System.out.print("]");
			if(i < vGross.size() - 1)
				System.out.print(", ");
		}
		System.out.println("]");

Ausgabe: [[Hallo, Welt!], [Nummer, Zwei!], [:-)]]

Benutzen solltest du aber in 99% der Fälle for-each-Schleifen.

Sofern dein Programm nicht mit mehreren Threads arbeitet solltest du außerdem ArrayList statt Vector in betracht ziehen. :-)
 
Zuletzt bearbeitet: (Interfaces benutzen! ;))
Zurück
Oben