Mehrdimensionales dynamisches Array

Status
Nicht offen für weitere Antworten.

Nikolas

Aktives Mitglied
Hallo

Ich steige gerade von Pascal nach Java um und vermisse die schönen dynamischen Arrays, die es anscheinend hier nicht so ohne weiteres gibt.
Als kleines Einstiegsprojekt habe ich mir Minesweeper ausgesucht, das bis schon ganz gut funktioniert, ausser, dass ich die Feldgröße nicht im Programm manipulieren kann, da ich bis jetzt mit arrays arbeite:
Code:
MineField[][] Field = new MineField[countX][countY];
wobei MineField eine eigene Klasse ist, die aus ein paar bools und integern besteht.

Hierbei kann ich ganz schön über
Code:
MineField[a][b].mined=true
auf das array zugreifen, nur leider muss ich bei der initialisierung die Größe angeben.

Auf der Suche nach einer anderen Möglichkeit bin ich auf den Vector gestoßen, der schon eher meine Sache zu sein scheint. Mit etwas suchen bin ich auch auf diesen Thread gestoßen, in dem gezeigt wird, wie ich vectoren in vectoren einbauen kann.

Nur sieht das nicht gerade gut aus. Wenn ich ein Feld bearbeiten will, müsste ich erst den entsprechenden Vector aus dem ersten Vectir auslesen, denn dann casten und könnte dann mein Feld auslesen.
Diese Aktion könnte ich zwar in eine kleine Funktion auslagern, aber schön ist das eigentlich nicht.

Von da her ist meine Frage, ob es in Java eine andere Datenstruktur gibt, die ich per Feld[j] ansprechen kann, die aber dynamisch ihre Länge ändern kann.

Nikolas
 

moormaster

Top Contributor
Nikolas hat gesagt.:
Nur sieht das nicht gerade gut aus. Wenn ich ein Feld bearbeiten will, müsste ich erst den entsprechenden Vector aus dem ersten Vectir auslesen, denn dann casten und könnte dann mein Feld auslesen.
Diese Aktion könnte ich zwar in eine kleine Funktion auslagern, aber schön ist das eigentlich nicht.

Dank Generics entfällt dabei seit j2se 1.5 zumindest das Casten, wenn mans richtig macht.
http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html

So kann man dem Vector bei seiner Deklaration bereits den Typ der zu speichernden Objekte übergeben:

Code:
 Vector<Integer> v = new Vector<Integer>();

 v.add(new Integer(3));
 v.add(new Integer(4));

 int test = v.get(0).intValue();

so kommt man völlig ohne Casten aus, da die get-Methode liefert gleich den richtigen Typ zurückliefert.
http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html

(nur so am Rande)
Dank Autoboxing vereinfacht sich obiges Beispiel sogar noch weiter, so dass man auch einfach int-Werte statt Integer-Objekten übergeben kann, welche dann automatisch in Integer-Objekte verpackt werden.

Das funktioniert auch in die andere Richtung: Versucht man ein Wrapper-Objekt direkt einer Variable primitiven Datentyps zuzuweisen, dann wird automatisch der jeweilige Wert des primitiven Typs zurückgegeben.


Code:
 Vector<Integer> v = new Vector<Integer>();

 v.add(3); // speichert ein Integer-Objekt im Vector
 v.add(4);

 int test = v.get(0); // v.get(0) liefert immernoch Integer Objekte zurück, welche aber dank Autoboxing automatisch in
                            // primitive Werte umgewandelt werden, da diese einer int Variable zugewiesen werden sollen.



D.h. dein mehrdimensionales dynamisches Array wäre so ohne casten realisierbar:

Code:
 Vector<Vector> rows = new Vector<Vector>();  // speichere Objekte vom Typ Vector

 rows.add(new Vector<MeinObj>()); // neue "Zeile" einfügen, welche Objekte vom Typ MeinObj speichern soll
 rows.get(0).add(new MeinObj("test")); // ein Objekt vom Typ MeinObj einfügen

 // rows.get(0) liefert jetzt direkt ein Objekt vom Typ Vector zurück, welches nicht extra gecastet werden muss
 // rows.get(0).get(0) liefert analog sofort ein Objekt vom Typ MeinObj
 
B

Beni

Gast
z.B. LinkedList und ArrayList, für deine Zwecke wäre letztere wohl die beste Wahl.

Um das Casten zu verhindern: benutze Generics.
Code:
List<List<Field>> grid = new ArrayList<List<Field>>();
grid.add( new ArrayList<Field>() );

...
grid.get( 0 ).add( new Field() );
...

Field xy = grid.get(x).get(y);

Wenn du dir eine Klasse "Grid" machst, die intern solche Listen verwendet, kannst du auch schönere Methoden (wie "get( x, y )") bauen.
 

Nikolas

Aktives Mitglied
Danke für die Hinweise, ich bin gerade dabei eine Klasse für die Listen zu bauen. So ganz verstehe ich die listen aber noch nicht, aber da mache ich lieber noch einen anderen Thread auf.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Mehrdimensionales ArrayList ins HashSet Allgemeine Java-Themen 10
E Mehrdimensionales array füllen Allgemeine Java-Themen 16
J Unterschied: Polymorphie und Dynamisches Binden Allgemeine Java-Themen 8
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
N Eclipse Dynamisches-Web-Project auf anderen Rechner transportieren Allgemeine Java-Themen 5
looparda Dynamisches Konsolenprogramm Allgemeine Java-Themen 3
T Dynamisches p:graphicimage im Datagrid Allgemeine Java-Themen 7
C Dynamisches und sortiertes Auslesen von Properties Allgemeine Java-Themen 2
P Dynamisches Binden Allgemeine Java-Themen 7
X Dynamisches hinzufügen von Panles Allgemeine Java-Themen 4
A Dynamisches Enum? Allgemeine Java-Themen 2
S dynamisches Array für Primfaktorzerlegung Allgemeine Java-Themen 13
S Dynamisches Manipulieren/Laden von Klassen Allgemeine Java-Themen 4
Z Dynamisches JPanel Allgemeine Java-Themen 10
hdi Dynamisches Instantiieren (Reflections) Allgemeine Java-Themen 4
H2SO3- dynamisches anlegen der dimensionaltität eines arrays Allgemeine Java-Themen 6
reibi Klassenpfad mal anders - dynamisches Laden einer Klasse Allgemeine Java-Themen 7
lumo "Exzessiv" dynamisches generieren Allgemeine Java-Themen 6
P dynamisches Array / Vector Allgemeine Java-Themen 2
R Dynamisches Laden von JNI-Bibliotheken Allgemeine Java-Themen 4
T Dynamisches laden von java Klassen Allgemeine Java-Themen 2
B Dynamisches Linken Allgemeine Java-Themen 15
M Dynamisches ausführen von methoden unbekannter klassen Allgemeine Java-Themen 6
V dynamisches laden von klassen Allgemeine Java-Themen 8
C Dynamisches Nachladen von JARs (Plugin) Allgemeine Java-Themen 3
S Dynamisches Casten Allgemeine Java-Themen 5
M Statisches und dynamisches Binden? Allgemeine Java-Themen 2
S Dynamisches Feld generieren. Allgemeine Java-Themen 10
E Dynamisches Instanziieren Allgemeine Java-Themen 2
B dynamisches Laden aller Klassen in einem Ordner ?? Allgemeine Java-Themen 5
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
M Array Rang eines Elements Allgemeine Java-Themen 4
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
noah1407 Array Allgemeine Java-Themen 3
D Methoden Teil-Array mit Maximalwert bestimmen Allgemeine Java-Themen 23
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
L Array und Index Allgemeine Java-Themen 26
L die 3 größten Zahlen im Array Allgemeine Java-Themen 1
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
Willi.We Array sortieren Allgemeine Java-Themen 5
gotzi242 Array Summe bestimmen tipps? Allgemeine Java-Themen 14
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
V4ll3.Wff Array in Java Allgemeine Java-Themen 4
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
H Array Sportschütze Allgemeine Java-Themen 6
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
M Array verändern Allgemeine Java-Themen 1
A JavaFX 2 dimensionales array Allgemeine Java-Themen 1
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
N Byte Array in Java "dekomprimieren" Allgemeine Java-Themen 3
parrot Array Aufgabe Allgemeine Java-Themen 3
N String Array Eingabe Allgemeine Java-Themen 6
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
N Variablen Array Länge ändern. Allgemeine Java-Themen 8
D Kgv aller Paare aus einem Array mit n integer berechnen Allgemeine Java-Themen 5
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
A Array Problem Allgemeine Java-Themen 8
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
F Datei in String-Array einlesen Allgemeine Java-Themen 8
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
F 3 Dimensionales Array mit Allgemeine Java-Themen 9
M Steueralgorithmus verwandelt Array in Anfangszustand Allgemeine Java-Themen 9
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
D Datentypen 2-3 Baum erstellen mit geordnetem int-array Allgemeine Java-Themen 0
T Objekt in Array packen Allgemeine Java-Themen 6
M Zahlen in Array anordnen Allgemeine Java-Themen 8
M Eclipse Unvollständigen Array ansteuern Allgemeine Java-Themen 2
D Erste Schritte Im Array Werte tauschen Allgemeine Java-Themen 5
Xge For/Array Error: IndexOutOfBounds Allgemeine Java-Themen 4
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
J Variablen Array ertellen bei model.put Allgemeine Java-Themen 13
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
R convert 2d array list to 2d array Allgemeine Java-Themen 1
J json Array würfel Spalten durcheinander Allgemeine Java-Themen 9
MiMa Array umbau oder Alternative? Allgemeine Java-Themen 5
L Datentypen 3D Array Allgemeine Java-Themen 3
M 2D Array mit unterschiedlichen Längen erstellen und befüllen Allgemeine Java-Themen 11
Mario1409 Methoden JSON Array von URL Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben