Mehrere Listen ineinander verschachteln

Status
Nicht offen für weitere Antworten.

SmartGuy

Mitglied
Hallo,
wie verhindere ich ausdrücke wie
Java:
List<List<List<List<List<List<List>>>>> Liste1=null
?

Klar ist die Antwort "mit OOP". :eek:
Aber wie genau?:rtfm:
 
M

maki

Gast
Eigener Datentyp (klasse) mit vernünftiger Struktur & Schnittstelle ;)
 

Landei

Top Contributor
Man könnte z.B. eine Map<Coord, Bla> verwenden, wobei Coord die Koordinaten speichert.

Ungetestet:
Java:
public class Coord {
   private int[] coords;
   public Coord(int... coords) {
        this.coords = coords;
   } 
   
   public int hashCode() {
        int r = 1;
        for(int c : coords) {
           r = 17*r + c; 
        }  
        return r; 
   }

   public boolean equals(Object o) {
       if(o instanceof Coord) {
          return Arrays.equals(coords, ((Coord)o).coords);
       } else return false;
   }
}


Map<Coord,String> = new HashMap<Coord, String>();
map.put(Coord(1,2,5,3), "test");
if(map.get(Coord(1,2,5,3)).equals("test")) {
   //tu was
}
 
M

maki

Gast
Das hier:
Java:
List<List<List<List<List<List<List>>>>> Liste1
ist keine vernünftige Struktur ;)

Was brauchst du denn genau?
 

SmartGuy

Mitglied
Ich benötige es für folgendes:

Ich lese eine XML-Datei ein.
die sieht folgendermaßen aus

[XML]
<A>
<aa>
<aaa>
<aaaa>
<aaaaa>
...
<aaab>
<aaac>
<aab>
...
<aac>
...
<ab>
<aba>
...
<ac>
...
[/XML]

Wenn ich nun mit der ganzen XML arbeiten möchte, muss ich auf alle Tags und deren Unterelemente zugreifen können?

Und wenn ich nun alle Tags durchgehen oder mit den Values von <aaaaa> arbeiten möchte und z.b. von <aaaaa> und <aaaba> vergleichen möchte brauch ich sowas.

z.B. hätte man so etwas:

Java:
for (int i=0; i<listA.size();i++){
        for (int j=0;j<listA.get(i).size();j++){
                  usw...
        }
}
 

Marco13

Top Contributor
Das ist ein Baum :eek:

Node root = <A>
List<Node> children = <A>.children() = { <aa>, <ab>, <ac> }
List<Node> grandchildren = children.get(0).children() = { <aaa>, <aab> ... }
...
 

SmartGuy

Mitglied
Das ist ein Baum :eek:

Node root = <A>
List<Node> children = <A>.children() = { <aa>, <ab>, <ac> }
List<Node> grandchildren = children.get(0).children() = { <aaa>, <aab> ... }
...

Bin auch dabei, das mit JDOM zu realisieren.
Hab bis jetzt:
Java:
public static void main (String args[]) throws Exception {

		/** Erstellt document aus der xml-Datei. */
		SAXBuilder builder = new SAXBuilder();

		Document doc = builder.build("C:/test.xml");

Element person = doc.getRootElement();}

Aber müsste halt auf die ururururururenkel zugreifen und mit denen arbeiten können.
 
B

bygones

Gast
[XML]
<A>
<aa>
<aaa>
<aa>
<aaaaa>
...
<aaab>
<aaac>
<aab>
...
<aac>
...
<ab>
<aba>
...
<ac>
...
[/XML]
mit Java mitteln wirst du hier nicht weiterkommen als zb JDom und dann auch ueber List.get(xx) gehen...

groovy ist da intuitiver
[groovy]
def A = new XmlParser().parse(...)
println A.aa.aaa.aaaa.text()
[/groovy]
 

SmartGuy

Mitglied
mit Java mitteln wirst du hier nicht weiterkommen als zb JDom und dann auch ueber List.get(xx) gehen...

groovy ist da intuitiver
[groovy]
def A = new XmlParser().parse(...)
println A.aa.aaa.aaaa.text()
[/groovy]

Ja richtig, dann würde es doch auch wieder so aussehen, wie z.B. listA.get(i).get(j).get(k).get(l).get.(m).get(n).getName() :lol:

Also ich würds machen, aber gibts ne leichtere und unkompliziertere Alternative?

Groovy? hmm... :rtfm: ist ja wieder ne neue Sprache. Mit OOP wär dies nicht einfacher möglich?
 
Zuletzt bearbeitet:
B

bygones

Gast
du kannst natuerlich das XML parsen und in eine bessere OOP struktur bringen... was aber dennoch bleibt dass du einmal im Jaba weg das XML parsen musst
 

0x7F800000

Top Contributor
Was ist denn das globale Ziel? Was willst du mit dieser XML-Datei denn anstellen? Bist du dir sicher, dass du da mit java drangehen solltest, und nicht etwa mit XSLT o.ä?
 

Andreas29

Bekanntes Mitglied
Hi,

wäre nicht XPath auch eine Alternative. Damit könntest du dir dann unter Angabe des Pfades ohne iterieren über diverse Listen die entsprechenden Elemente holen. Nur so als Tipp.

Grüße,
Andy
 

SmartGuy

Mitglied
Was ist denn das globale Ziel? Was willst du mit dieser XML-Datei denn anstellen? Bist du dir sicher, dass du da mit java drangehen solltest, und nicht etwa mit XSLT o.ä?
Ziel: s.o., weiterarbeiten mit den untersten "Baumeinträgen" in der XML nach Vergleich der oberen Baumelemente. Ne, es muss mit Java realisiert werden.

du kannst natuerlich das XML parsen und in eine bessere OOP struktur bringen... was aber dennoch bleibt dass du einmal im Jaba weg das XML parsen musst
Ist es nicht schon geparsed worden? :oops:
Habs jetzt auch so gemacht, dass ich es mit Hilfe von OOP und rekursiven Methoden angefangen hab. Bis jetzt läufts ganz gut. Mal schauen, ob so alles realisierbar bleibt.

Hi,
wäre nicht XPath auch eine Alternative. Damit könntest du dir dann unter Angabe des Pfades ohne iterieren über diverse Listen die entsprechenden Elemente holen. Nur so als Tipp.
Das wäre dann aber ne neue Prog. bzw. Skriptsprache. Es soll mit Java gelöst werden. :rtfm:
 
U

Unregistriert

Gast
weil die Einarbeitung zu viel Zeit beanspruchen würde?!
 

Nader

Mitglied
Ich benötige es für folgendes:

[XML]
<A>
<aa>
<aaa>
<aaaa>
<aaaaa>
...
<aaab>
<aaac>
<aab>
...
<aac>
...
<ab>
<aba>
...
<ac>
...
[/XML]

natürlich kann man mit ein bisschen Spielereien was einfaches basteln::D:eek:

Java:
import java.util.HashMap;

public class XmlMap extends HashMap<XmlMap.Key, XmlMap.Value> {

	/**
	 * @param  data
	 */
	public void put(Object... data) {
		if (data.length < 2) {
			throw new IllegalArgumentException("blabla..");
		}
		super.put(createPutKey(data), new Value(data[data.length - 1]));
	}

	/**
	 * @param   data
	 *
	 * @return  Object
	 */
	public Object get(Object... data) {
		return super.get(createGetKey(data));
	}

	private Key createPutKey(Object... data) {
		StringBuffer key = new StringBuffer();
		for (int i = 0; i < data.length - 1; i++) {
			key.append(data[i].toString());
		}
		return new Key(key.toString());
	}

	private Key createGetKey(Object... data) {
		StringBuffer key = new StringBuffer();
		for (int i = 0; i < data.length; i++) {
			key.append(data[i].toString());
		}
		return new Key(key.toString());
	}

	static class Key {
		final Object key;

		public Key(Object key) {
			this.key = key;
		}

		public boolean equals(Object other) {
			return key.equals(((Key) other).key);
		}

		public int hashCode() {
			return key.hashCode();
		}

		public String toString() {
			return key.toString();
		}
	}

	static class Value {
		final Object value;

		/**
		 * @param  value
		 */
		public Value(Object value) {
			this.value = value;
		}

		public String toString() {
			return value.toString();
		}
	}

	/**
	 * @param  _
	 */
	public static void main(String... _) {
		XmlMap xm = new XmlMap();

		xm.put("A", "aa", "aaa", "aaaa", "aaaaa", "Hello World A");
		xm.put("A", "ab", "aba", "abaa", "abaaa", "Hello World B");

		System.out.println(xm.get("A", "aa", "aaa", "aaaa", "aaaaa"));
		System.out.println(xm.get("A", "ab", "aba", "abaa", "abaaa"));
	}
}
 
U

Unregistriert

Gast
wofür stehen die 3 Pünktchen in

public void put(Object... data)

?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Listen - Mehrere Objekte Allgemeine Java-Themen 1
T Synchronisation von Listen bei Zugriffen durch mehrere Prozesse Allgemeine Java-Themen 15
I Mehrere Klassen mit den selben Daten Allgemeine Java-Themen 5
berserkerdq2 Ist es schlechter Programmierstyle mehrere Panes aufeinander zu machen? Allgemeine Java-Themen 1
Tarrew OpenAPI Schnittstelle - Mehrere Kunden mit unterschiedlichen Zugriffsrechten Allgemeine Java-Themen 2
A Mehrere for-Schleifen Allgemeine Java-Themen 2
M Mehrere Sounds Allgemeine Java-Themen 3
M Mehrere Ressourcen in einem package ablegen Allgemeine Java-Themen 1
Avalon DTO aus mehrere Entitäten erstellen Allgemeine Java-Themen 5
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
Curtis_MC Collections Liste anhand mehrere Kriterien sortieren Allgemeine Java-Themen 6
bueseb84 Git : Mehrere Server verwenden Allgemeine Java-Themen 3
L Mehrere .Jar Files aufrufen Allgemeine Java-Themen 9
L mehrere Methoden Allgemeine Java-Themen 19
W Variablenübergabe über mehrere Klassen Allgemeine Java-Themen 4
B StAX Parser - mehrere Methoden, ein XML Allgemeine Java-Themen 4
T String mehrere Worte Allgemeine Java-Themen 2
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
J Variablen Mehrere int-variablen in txt abspeichern und danach wieder auslesen Allgemeine Java-Themen 1
S JTable - mehrere ausgewählte Rows in ArrayList Allgemeine Java-Themen 5
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
S libGDX mehrere Texturen zu Einer zusammenfassen Allgemeine Java-Themen 0
X Mehrere booleans in Datei Speichern, Updaten und Laden Allgemeine Java-Themen 1
OnDemand CSV parsen mehrere Zeilen Allgemeine Java-Themen 22
K Mehrere Programmiersprachen gleichzeitig lernen Allgemeine Java-Themen 3
C Mehrere Seiten drucken in Hoch- und Querformat Allgemeine Java-Themen 0
perlenfischer1984 Mehrere Komponenten erstellen Allgemeine Java-Themen 3
F AWT Mehrere Tastatureingaben verarbeiten Allgemeine Java-Themen 5
J Mehrere Wörter getrennt in eine Array einlesen, wie ? Allgemeine Java-Themen 7
HarleyDavidson Best Practice Integer-Zahlenfolge über mehrere Programmstarts Allgemeine Java-Themen 7
F Mehrere JTables' drucken Allgemeine Java-Themen 0
2 mehrere Json Werte Parsen Allgemeine Java-Themen 3
stylegangsta Mehrere html seiten einer Homepage einlesen und als Textdatei ausgeben Allgemeine Java-Themen 14
P Mehrere Java Versionen auf dem Rechner Allgemeine Java-Themen 3
B JAVA - mehrere Clienten gleichzeitig starten. Nicht bei Code! Allgemeine Java-Themen 3
S PrintWriter.println() schreibt mehrere Zeilen Allgemeine Java-Themen 19
2 Mehrere Uhrzeiten Sortieren Allgemeine Java-Themen 2
T Jsoup: Mehrere Links nacheinander parsen Allgemeine Java-Themen 11
T Schlüsselworte mehrere public-Klassen in einem Paket Allgemeine Java-Themen 7
E Lesen von mehrere Csv-Datei und ihre Inhalte vergleichen Allgemeine Java-Themen 3
K GUI-Entwicklung - Dispose, enabling und mehrere Controller Allgemeine Java-Themen 1
M Eclipse Mehrere Threads, mehrere Konsolen Allgemeine Java-Themen 4
A Threads Lock über mehrere Abschnitte in verschiedenen Methoden Allgemeine Java-Themen 5
H Mehrere Bilder aus einer Datei lesen Allgemeine Java-Themen 2
B Mehrere Objekte verschlüsselt serialisieren Allgemeine Java-Themen 6
S Tool um mehrere Klassen in einer Klasse vereinen? Allgemeine Java-Themen 6
K Mehrere Arrays auf einmal erstellen Allgemeine Java-Themen 2
R ListIterator über mehrere Arrays Allgemeine Java-Themen 13
J JFreeChart - Mehrere X-Achsen Einteilungen Allgemeine Java-Themen 3
S Mehrere Shapes "malen" Allgemeine Java-Themen 3
M Input/Output Mehrere Bilder aus Resourcen auslesen Allgemeine Java-Themen 8
J Erste Schritte Mehrere Mauszeiger für Ping Pong Game Allgemeine Java-Themen 7
P Mehrere MP3s abspielen Allgemeine Java-Themen 3
M Mehrere CRLF entfernen Allgemeine Java-Themen 13
F Mehrere Threads - ein Stack Allgemeine Java-Themen 6
K Mehrere JVMs die auf eine Klasse mit statischen Variablen zugreift Allgemeine Java-Themen 19
B JUnit und mehrere Instanzen der selben Applikation Allgemeine Java-Themen 4
G mehrere Threads starten/stoppen Allgemeine Java-Themen 4
A Email versenden mehrere Zeilen Allgemeine Java-Themen 10
D Mehrere String-Werte in eine Tabellen-Zelle schreiben Allgemeine Java-Themen 8
R JTree - Mehrere Roots Allgemeine Java-Themen 6
Beckenbauer Mehrere Paragraphe in eine Word Datei schreiben Allgemeine Java-Themen 4
H Mehrere Anwendungen von Java kontrollieren lassen Allgemeine Java-Themen 10
T Edit: JLabel+MouseListener oeffnet mehrere Instanzen Allgemeine Java-Themen 5
O split mit einem ODER mehrere Tabulatoren oder Leerzeichen Allgemeine Java-Themen 6
M JFreeChart mehrere PieCharts erstellen Allgemeine Java-Themen 2
S Wie kann ein Observer mehrere Observables beobachten? Allgemeine Java-Themen 9
D befehl auf mehrere objekte anwenden Allgemeine Java-Themen 7
B mehrere services in einem client Allgemeine Java-Themen 10
Meldanor Speichern der Datenbank - Lohnen sich mehrere Threads? Allgemeine Java-Themen 2
G Process - mehrere Commands?! Allgemeine Java-Themen 2
O Mehrere Exemplare(Kopieen) drucken Allgemeine Java-Themen 2
S log4j Logging über mehrere Klassen Allgemeine Java-Themen 13
F 1 Key - mehrere Values Allgemeine Java-Themen 3
G JOGL mehrere GLCanvas erstellen Allgemeine Java-Themen 2
P Java3D mehrere Ebenen parallel zu yz-Ebene Allgemeine Java-Themen 9
R mehrere jar Dateien kompinieren Allgemeine Java-Themen 14
P Mehrere Instanzen der selben Appl. verhindern Allgemeine Java-Themen 12
M Scanner-Methode: Mehrere Eingaben mit Exception behandeln Allgemeine Java-Themen 10
I Wie kann ich mehrere Mp3 Tags ausgeben? Allgemeine Java-Themen 6
I Mehrere MP3 Dateien einlesen? Allgemeine Java-Themen 3
G String.replaceall - mehrere Zeichen durch eines ersetzen Allgemeine Java-Themen 5
C ArrayList sortieren (mehrere Kriterien) Allgemeine Java-Themen 6
N mehrere klassen extenden Allgemeine Java-Themen 33
G Oracle will mehrere hundert Produkte patchen Allgemeine Java-Themen 5
F Logger in mehrere Dateien mit log4J Allgemeine Java-Themen 4
W Properties-Klasse: mehrere Parameter-Belegungen übergeben? Allgemeine Java-Themen 2
Daniel_L Mehrere (XML-)Datei aus einer ZIP-Datei auslesen Allgemeine Java-Themen 4
V Mehrere main() in jar, wie starten? Allgemeine Java-Themen 4
A Problem: Mehrere PDF-Files nacheinander Öffnen Allgemeine Java-Themen 12
D Mit Linux mehrere Kommandos in einem Subprozeß Allgemeine Java-Themen 3
D Suche sowas wie Map nur für mehrere Werte Allgemeine Java-Themen 13
V JFilechooser, mehrere Datein selektieren und Reihenfolge? Allgemeine Java-Themen 2
G mehrere Threads verwalten? Allgemeine Java-Themen 14
K Applet dass auf mehrere Bibliotheken zugreift Allgemeine Java-Themen 13
F mehrere Verzeichnisse als Parameter Allgemeine Java-Themen 15
G mehrere url's in ein array (problem mit // ) Allgemeine Java-Themen 7
P mehrere super klassen Allgemeine Java-Themen 10

Ähnliche Java Themen


Oben