mehrdimensionale Datenstruktur erfassen

Herr Kaiser

Bekanntes Mitglied
Hallo Forum,

um Java zu lernen, versuche ich zur Zeit, eine Anwendung, die ich vor Jahren in VisualBasic geschrieben habe, mit Java neu zu erfinden. Bei einigen konzeptionellen Vorüberlegungen könnte ich den Rat von euch alten Hasen gut gebrauchen, damit ich mich nicht in falsche Richtungen verrenne. Deshalb folgendes Problem:
Aus einem File soll eine mehrdimensionale Datenstruktur gelesen werden. Wenn ich meine abstrakte Fragestellung mal auf ein anschauliches fiktives Beispiel übertrage, könnte das vielleicht soetwas sein: Es sollen für die verschiedenen Schulklassen in den einzelnen Schulen verschiedener Städte die Anzahl der Schüler eingelesen werden. Das File könnte also so aufgebaut sein:

stadt_1
schule_1
anzSchuelerKlasse_1, anzSchuelerKlasse_2, anzSchuelerKlasse_3 ... anzSchuelerKlasse_n
schule_2
anzSchuelerKlasse_1, ...anzSchuelerKlasse_m
...
schule_o
...
stadt_2
....
stadt_p

In VB konnte ich die Daten mit einem 3-dimensionalen dynamischen Array durch anzSchueler(stadt,schule,klasse) erfassen. Da die Zahl der Städte, Schulen und Klassen sich erst beim Einlesen der Daten ergibt, benötige ich jetzt wohl eine Verschachtelung von ArrayLists, um ein 3-dimensionales dynamisches Array zu simulieren (richtig?).
Könnt Ihr mir sagen, mit welchem Code ich soetwas deklariere/initialisiere und wie ich auf die einzelnen Einträge zugreifen kann. Hab inzwischen einiges über ArrayLists gelesen, bekomme aber so ein mehrdimensionales Gebilde einfach nicht hin. Oder gibt es gar eine einfachere/intelligentere Umsetzung? ...
 

Herr Kaiser

Bekanntes Mitglied
Ja, prima, die Deklaration ließ sich ja ganz easy auf 3 Dimensionen erweitern. Allerdings stehe ich mir beim Befüllen der Arrays noch im Weg. Meine naive Idee ist offensichtlich falsch:

Java:
import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {
        ArrayList<ArrayList<ArrayList<int[]>>> anzSchueler = new ArrayList<ArrayList<ArrayList<int[]>>>();

        ArrayList stadt1 = new ArrayList();
        ArrayList schule1 = new ArrayList();
        ArrayList klasse1 = new ArrayList();

        anzSchueler.add(stadt1);
        anzSchueler.get(0).add(schule1);
        anzSchueler.get(0).get(0).add(klasse1);
        anzSchueler.get(0).get(0).get(0).add(25);
    }
}

In Zeile 14 wird moniert, dass das Symbole klasse1 nicht gefunden wird, und in Zeile 15 das Symbol add.

Wo liegt denn hier der Hase im Pfeffer? ...
 
Zuletzt bearbeitet:

nrg

Top Contributor
oh gott vergess das bitte wieder....

mach dir eine Class Stadt, die eine ArrayList der Class Schule als Attribut hält. In der Class Schule dann eine ArrayList der Klassen und in der Class Klasse dann Attribute wie anzahlSchueler etc... das Konzept ist vllt in Abhänigkeit deines Anwendungsfalls anpassbar aber fang nicht mit sowas wie "new ArrayList<ArrayList<ArrayList<int[]>>>();" an, sondern halte das OO.

edit: etwas verwirrend mit "Schul"Klasse und Klasse, deshalb kleiner edit ;)
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Hallo, Herr von ERGO :D Damit die Typen bei den Generics stimmen, müßte man das etwas ... aufwändiger schreiben: Bei stadt1, schule1 und klasse1 müßten jeweils auch in <spitzen Klammern> die Typen dahinter stehen. Das wird dann aber ziemlich unübersichtlich. Wenn es nur darum geht, einen "voll-viel-dimensionalen" Array zu erstellen, könnte man das als ... "Programmierziel" in Frage stellen. Entscheidend ist IMHO, was mit diesen Daten dann gemacht werden soll. Wie und wo sollen diese Schhülerzahlen dann gespeichert und abgefragt werden? Welches sind die "Dimensionen" der Datenstruktur? Nur indizes, oder vielleicht Namen? Worauf das rausläuft: Man sollte sich dafür vielleicht eine eigene Klasse machen, statt das in tief verschachtelten ArrayLists zu speichern...
 

Herr Kaiser

Bekanntes Mitglied
Ich werde das Gefühl nicht los, dass etwas dran ist, wenn fast zeitgleich 2x die Empfehlung kommt, dass ich es lieber mit Klassen lösen soll:)

Schade, wäre mit dem zugehörigen Teilproblem schon fertig gewesen, wenn es wie oben funktioniert hätte, aber was nützt es, wenn der Code nicht mitspielt. Dann werde ich mal versuchen, es in OO zu lösen.

@Marco13: Die Daten sind in einem Textfile gespeichert. Das Einlesen der Werte ist schon gelöst, nur noch nicht die Zuweisung zu den Arrays. Die Dimensionen enthalten übrigens nur Indizes, so dass ich gehofft habe, dass ein Array-Zugriff leicht zu bewerkstelligen ist. Danke für den Hinweis mit den fehlenden Typen. Hab das ergänzt. Aber der Fehler liegt scheinbar noch woanders.

Danke für eure Hilfestellung! :)
 

Marco13

Top Contributor
Wie willst du später mit diesen Schülerzahlen rumhantieren? (Und warum sind ganz innen int[]s und nicht Integer-Objekte? ???:L ). So als Beispiel: Soll das so sein
Java:
Schülerverwaltung s = liesAusDatei();

// Speichere die Anzahl (123) der Schüler in der angegebenen Klasse 
// der angegegebenen Schule der angegebenen Stadt
s.set(stadtIndex, schulIndex, klassenIndex, 123); 

// Hol' dir die Anzahl der Schüler
int anzahl0 = s.get(stadtIndex, schulIndex, klassenIndex);
? Falls ja, dann könnte man sowas definieren wie ein
Java:
interface Schülerverwaltung 
{
    void set(int stadtIndex, int schulIndex, int klassenIndex, int anzahl);
    int get(int stadtIndex, int schulIndex, int klassenIndex);
}
und das dann "irgendwie" Implementieren. (Darum kann man sich später Gedanken machen).

Oder willst du irgendwelche anderen Abfragen machen, wie z.B.
Java:
Schülerverwaltung s = liesAusDatei();

s.set("München", "Einstein-Gymnasium", klasse, 123); 
int anzahl0 = s.get("Hamburg", "Zuse-Realschule", klasse);
?

Oder war das wirklich nur ein Beispiel, und es geht gar nicht um Schulen? Wenn es um irgendwelche Daten mit beliebig vielen Dimensionen (!) geht, könnte man da was entsprechend allgemeines basteln. Ich hatte mal einen Satz von Datenstrukturen für beliebigdimensionale Datensätze geschrieben, aber das ist noch nicht final und noch sehr sehr ausbaufähig....
 

Herr Kaiser

Bekanntes Mitglied
Dämlicher Denkfehler meinerseits :oops:
Der Ansatz oben war wohl im Prinzip richtig, ich habe nur eine Dimension zuviel einbauen wollen. Nur der Vollständigkeit halber (denn die Anregung, dass man es eleganter mit Klassen löst, überzeugt mich): Der folgende Beispielcode gibt richtigerweise "32" aus:

import java.util.ArrayList;
Java:
public class Main {

    public static void main(String[] args) {
        ArrayList<ArrayList<ArrayList<String>>> anzSchueler = new ArrayList<ArrayList<ArrayList<String>>>();

        ArrayList stadt1 = new ArrayList<int[]>();
        ArrayList schule1 = new ArrayList<int[]>();

        anzSchueler.add(stadt1);
        anzSchueler.get(0).add(schule1);
        anzSchueler.get(0).get(0).add("25");
        anzSchueler.get(0).get(0).add("32");
        
        int stadt=0;
        int schule=0;
        int klasse=1;
        
        System.out.println(anzSchueler.get(stadt).get(schule).get(klasse));
    }
}
 

Herr Kaiser

Bekanntes Mitglied
Hey, Marco, da haben wir gerade wohl zeitgleich getippt. Mit den fehlerhaften int[]s hast du recht, das war mir inzwischen auch aufgefallen. Du ahnst es richtig, es geht mir nicht um irgendwelche Schulen, ich habe das Beispiel nur als Versuch eines anschaulichen Platzhalters für wissenschaftliche Daten verwendet, die abstrakt und schwer zu erklären sind. Ich sehe mir deine Codebeispiele gleich genauer an. Ich vermute, dass ich als Neuling da gut weitere Anregungen finde.

1000 Dank! :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Fynx_HD Arrays übergeben, Mehrdimensionale Arrays Zeilenabtrennung in schleifen Java Basics - Anfänger-Themen 8
N mehrdimensionale arrays Java Basics - Anfänger-Themen 12
J Mehrdimensionale Arrays Java Basics - Anfänger-Themen 2
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
J Methoden Mehrdimensionale Arrays übereinander legen Java Basics - Anfänger-Themen 5
F Mehrdimensionale Arrays Java Basics - Anfänger-Themen 12
G Mehrdimensionale Arrays Java Basics - Anfänger-Themen 17
T Mehrdimensionale Arrays mit geschachtelter for-Schleife initialisieren Java Basics - Anfänger-Themen 14
T Mehrdimensionale Array Java Basics - Anfänger-Themen 2
L mehrdimensionale arrays ich verzweifle so langsam... Java Basics - Anfänger-Themen 9
putinator Mehrdimensionale Array addieren Java Basics - Anfänger-Themen 10
C Mehrdimensionale Arrays in Java langsam? Java Basics - Anfänger-Themen 8
D 2 mehrdimensionale Matrix einlesen Java Basics - Anfänger-Themen 2
D Mehrdimensionale Arrays Sortieren Java Basics - Anfänger-Themen 5
T Mehrdimensionale Arrays Java Basics - Anfänger-Themen 4
B mehrdimensionale arrays Java Basics - Anfänger-Themen 4
T .add(E) für mehrdimensionale Vectoren Java Basics - Anfänger-Themen 5
L Mehrdimensionale Array Java Basics - Anfänger-Themen 4
B mehrdimensionale Arrays Java Basics - Anfänger-Themen 5
A Mehrdimensionale Felder Java Basics - Anfänger-Themen 18
J eclipse, mehrdimensionale arrays, hilfsmethoden Java Basics - Anfänger-Themen 3
D Mehrdimensionale ArrayList - Zugriff über return Java Basics - Anfänger-Themen 2
B Mehrdimensionale Array Problem Java Basics - Anfänger-Themen 12
S arraycopy für mehrdimensionale Arrays? Java Basics - Anfänger-Themen 8
J Mehrdimensionale Liste erstellen ohne Array Java Basics - Anfänger-Themen 14
B Mehrdimensionale Arrays Java Basics - Anfänger-Themen 4
T mehrdimensionale arrays Java Basics - Anfänger-Themen 8
H Mehrdimensionale Arrays vergleichen Java Basics - Anfänger-Themen 6
V Mehrdimensionale Collection? Java Basics - Anfänger-Themen 4
G Zwei mehrdimensionale Arrays multiplizieren Java Basics - Anfänger-Themen 9
J Mehrdimensionale Array kopieren Java Basics - Anfänger-Themen 6
J Mehrdimensionale Arrays inhaltlich vergleichen. Java Basics - Anfänger-Themen 3
G Mehrdimensionale ArrayList erstellen Java Basics - Anfänger-Themen 7
D mehrdimensionale ArrayList ? Java Basics - Anfänger-Themen 14
D mehrdimensionale nicht-rechteckige Arrays Java Basics - Anfänger-Themen 2
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
FelixN Teilsummenproblem / welche Datenstruktur Java Basics - Anfänger-Themen 2
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
O Datenstruktur auf SET prüfen in O(n) Java Basics - Anfänger-Themen 32
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
A Datenstruktur für Savings Algorithmus und Planung von kleinen Programmierprojekten Java Basics - Anfänger-Themen 1
F Beste Datenstruktur zum Speichern? Java Basics - Anfänger-Themen 1
I Spielbrett programmieren: Datenstruktur Java Basics - Anfänger-Themen 3
R Klassen Die lineare Datenstruktur Queue Java Basics - Anfänger-Themen 3
S Welche Datenstruktur ist die optimalste um Funktionen fuer bestimmte Wertebereiche abzurufen..? Java Basics - Anfänger-Themen 5
C Methoden Datenstruktur Liste Java Basics - Anfänger-Themen 3
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
S Zusammenhang Datenstruktur/Algorithmus Java Basics - Anfänger-Themen 1
M Datenstruktur gesucht Java Basics - Anfänger-Themen 3
Luk10 Geeignete Datenstruktur Java Basics - Anfänger-Themen 4
J Erzeugen einer Datenstruktur Java Basics - Anfänger-Themen 12
T Datenstruktur für Sortierung Java Basics - Anfänger-Themen 4
StupidAttack Gson, welche Datenstruktur? Java Basics - Anfänger-Themen 4
T Java-Datenstruktur: zuweisen von Strings auf Listen von Strings Java Basics - Anfänger-Themen 10
N Vektor mit eigener Datenstruktur sortieren Java Basics - Anfänger-Themen 20
D Welche Datenstruktur für welche Problemstellung? Java Basics - Anfänger-Themen 10
A begrenzte Datenstruktur zur Speicherung von bytes Java Basics - Anfänger-Themen 6
H Adjazenzliste - Datenstruktur aber wie? Java Basics - Anfänger-Themen 7
Povlsen84 Datentypen Große, sortierte, schnelle Datenstruktur Java Basics - Anfänger-Themen 9
B Finden gemeinsamer Kanten: welche Datenstruktur ? Java Basics - Anfänger-Themen 9
B Schlange Datenstruktur Java Basics - Anfänger-Themen 16
G Datenstruktur gesucht Java Basics - Anfänger-Themen 14
A Schnelle, dynamische, geordnete Datenstruktur? Java Basics - Anfänger-Themen 11
E Gibt es eine ähnliche Datenstruktur wie eine Hashmap Java Basics - Anfänger-Themen 3
K eigene Hash-Datenstruktur Java Basics - Anfänger-Themen 2
D Was fürne Datenstruktur für Kreuztabelle mit doubles? Java Basics - Anfänger-Themen 1
K Datentyp vs. Datenstruktur - Unterschiede Java Basics - Anfänger-Themen 13
D Was machen wenn Datenstruktur sich ständig ändert? Java Basics - Anfänger-Themen 10
0 Dynamische Datenstruktur ohne Duplikate und mit direkter Elementauswahl Java Basics - Anfänger-Themen 3
G Welche Datenstruktur ( Sets / Maps)? Java Basics - Anfänger-Themen 10
I Datenstruktur eines Terminkalenders Java Basics - Anfänger-Themen 11
K suche nicht dynamisch Datenstruktur Java Basics - Anfänger-Themen 6
M Suche passende Datenstruktur Java Basics - Anfänger-Themen 3
P geeignete Datenstruktur für dreidimensionale Raumbelegung Java Basics - Anfänger-Themen 5
G Suche geeignete Datenstruktur Java Basics - Anfänger-Themen 8
G Baum Datenstruktur Java Basics - Anfänger-Themen 2
U Welche Datenstruktur soll ich nehmen? Java Basics - Anfänger-Themen 11
G Welche Datenstruktur ist hier die sinnvolste Java Basics - Anfänger-Themen 6
G Datenstruktur und die Kommunikation mit der GUI Java Basics - Anfänger-Themen 10
X txt datei in eine datenstruktur einlesen Java Basics - Anfänger-Themen 3
J Datenstruktur Java Basics - Anfänger-Themen 6
G Datenstruktur [int id, int wert] nach wert sortieren? Java Basics - Anfänger-Themen 5
S Welche Datenstruktur für Tabelle/DB? Java Basics - Anfänger-Themen 5
1 Wahl der Datenstruktur für die Suche. Java Basics - Anfänger-Themen 9
G Geeignete Datenstruktur ? Java Basics - Anfänger-Themen 8
N passende Datenstruktur Java Basics - Anfänger-Themen 3
E welche Datenstruktur (Collection) Java Basics - Anfänger-Themen 4
6 Welche Datenstruktur? Java Basics - Anfänger-Themen 3
P Datenstruktur Java Basics - Anfänger-Themen 4
J Kann man Daten innerhalb einer Datenstruktur verändern? Java Basics - Anfänger-Themen 4
K datenstruktur Java Basics - Anfänger-Themen 5
G Datenstruktur abbilden Java Basics - Anfänger-Themen 3
F Welche Datenstruktur für Matrix mit Vektoren? Java Basics - Anfänger-Themen 2
F Gibt es eine Datenstruktur für Koordinaten x, y? Java Basics - Anfänger-Themen 8
E Welche Datenstruktur für Spielbäume? Java Basics - Anfänger-Themen 13
P Datenstruktur gesucht: Array mit Dictionary Java Basics - Anfänger-Themen 2
H Datenstruktur für folgende Daten Java Basics - Anfänger-Themen 8
G Komplexe Datenstruktur (Liste heterogener Datensätze) ? Java Basics - Anfänger-Themen 2
P Welche Datenstruktur um schnell zu suchen? Java Basics - Anfänger-Themen 25
S Datenstruktur für Fahrplan einer Buslinie Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben