Array dynamisieren oder ArrayList verwenden?

saxopraxo

Mitglied
Hallo Leute.

Ich habe eine Frage zu einem Problem mit Array und ArrayList.
Das Array wird mit festen Grenzen definiert und die ArrayList ist eine Liste von Arrays.
Ich muss Daten auswerten und muss ich mit einem dynamischen Array arbeiten, weil ich die Grösse des Arrays am Anfang nicht weiss.
Dieses Array ist mehrdimenional und mit jedem gefundenen Wert und seinen Unterwerten (Index) soll das Array grösser werden.
In VBA gibt es eine Möglichkeit, ein Array zu vergrössern und zu verkleinern, je nachdem wie man es benötigt.
In JAVA habe ich diese Möglichkeit noch nicht gefunden. Wenn ich eine ArrayList benutze, dann ist ja jeder neue Index in einzelnes Array, das zur ArrayList addiert wird.
Ein „normales“ Array kann ich nachdem es definiert wurde, nicht mehr ändern.
Wie kann man da am besten vorgehen? Erst alles auszählen und dann das Array definieren?

Gruß

Saxopraxo
 

httpdigest

Top Contributor
Eine ArrayList ist keine Liste von Arrays. Es ist eine Implementierung der Schnittstelle `java.util.List` mit Hilfe eines einzelnen Arrays, das intern entsprechend dynamisch vergrössert wird, wenn nötig.
Nichtsdestotrotz kannst du natürlich als Elementtyp einer ArrayListe wiederum Arrays haben, wenn du dynamisch mehrere Arrays in einer Liste speichern möchtest.
 

temi

Top Contributor
In VBA gibt es eine Möglichkeit, ein Array zu vergrössern und zu verkleinern, je nachdem wie man es benötigt.
In JAVA habe ich diese Möglichkeit noch nicht gefunden.
Direkt lässt sich ein Java-Array nicht vergrößern. Der übliche Weg besteht darin, ein neues, größeres Array anzulegen, die Daten aus dem alten Array in das neue Array zu kopieren und dann die Referenz auf das neue Array, der Variablen zuzuweisen, die die Referenz auf das alte Array enthält.
Java:
int[] arr = int[100]; // z.B. ein int-Array
// ...
int[] temp = int[200];
System.arraycopy(old, 0, temp, 0, old.length);
arr = temp;

Ich würde allerdings zur ArrayList tendieren, wenn nicht ganz spezielle Gründe dagegen sprechen.
 
Zuletzt bearbeitet:

saxopraxo

Mitglied
Hallo,

danke für die schnelle Antwort.
So wie ich es verstehe:
ArrayList sind eine Liste von addierten Arrays.
Ich müsste dann für jeden neuen Index ein neues Array definieren und dann dazu addieren.
Die Arrays müssten dann über eine Variable hochgezählt werden beim definieren.

Gruss

Saxopraxo
 

temi

Top Contributor
Hier ist die "Anleitung" zur ArrayList

ArraList ist eine Implementation des Interfaces List

Java:
// erzeuge eine Liste für Strings
List<String> stringliste = new ArrayList<>();

// füge Daten hinzu
stringliste.add("Ein String");
stringliste.add("Hurra!");

// gib einen String wieder aus
System.out.println(stringliste.get(0)); // "Ein String"
 

temi

Top Contributor
Ich muss Daten auswerten und muss ich mit einem dynamischen Array arbeiten, weil ich die Grösse des Arrays am Anfang nicht weiss.
Dieses Array ist mehrdimenional und mit jedem gefundenen Wert und seinen Unterwerten (Index) soll das Array grösser werden.
Was soll das bedeuten? Hast du einen Wert, der eine Art Schlüssel darstellt und dazu mehrere Unterwerte?

Dann wäre vielleicht Map<> in Kombination mit List<> eine Lösung.

Java:
Map<String, List<String>> map = new HashMap<>();

Damit hast du jetzt zu einem Schlüssel (String) die Möglichkeit eine Liste von weiteren Strings zu speichern.

Du musst das natürlich auf deine gewünschten Datentypen anpassen.
 

White_Fox

Top Contributor
Ehrlich gesagt habe ich noch nie darüber nachgedacht wie ArrayList implementiert ist - ich habe es immer wie ein dynamisches Array verwendet.
Es ist eine Liste, kein Array, jaja...aber das interessiert dich doch eigentlich nicht:

Java:
ArrayList<SomeClazz> list = new ArrayList<>();    //Eine neue Liste, nur ist sie leer

list.add(new SomeClazz());     //Füge ein Element ein...hast du bei der Initialisierung einen Platz dafür
                            //vorgesehen? Nicht? Ja gut daß es kein ordinäres Array ist...

list.add(new SomeClass());    //Ja, noch ein Element für das vorher kein Platz reserviert wurde...
 

saxopraxo

Mitglied
Hallo Leute,

vielen Dank für die Hinweise und Tips. Das muss ich ausprobieren.
Meine Daten sind mehrdimensional, z.B. Name, Anhang, Wert 1, Wert 2.
Eigentlich müsste man Matrix dazu sagen.
z.B.:
0.0, 0.1, 0.2, 0.3, 0.4
1.0, 1.1, 1.2, 1.3, 1.4
2.0, 2.1, 2.2, 2.3, 2.4
...
n.0, n.1, n.2, n.3, n.4

Wobei ich am Anfang nicht weiss, wie gross "n" sein wird.
Deshalb auch die Idee mit der ArrayList.
Allerdings weiss ich nicht so recht, wie ich das am besten bewerkstelligen kann, zum anlegen, eintragen und wieder auslesen.

Gruss
 

temi

Top Contributor
Meine Daten sind mehrdimensional, z.B. Name, Anhang, Wert 1, Wert 2.
Das 2. Beispiel ist leider nicht ganz verständlich. Was ist am 2. Beispiel der Name?

Ist Name der Schlüsselwert (also der Spaltenkopf) und daran hängen dann der Anhang und Wert 1, 2, 3, n?

Oder ist es wie im zweiten Beispiel eine Tabelle mit 5 Spalten und n Zeilen?

Etwas konkreter müsstest du schon werden, damit man dir helfen kann.
 

LimDul

Top Contributor
Und ist es wirklich eine Matrix? Wenn du sagst, deine Daten sind mehrdimensional. Ist das nicht in Wirklichkeit ein eigenes Objekt mit einer eigenen Klasse?

Java:
public class Daten {
private String name;
private String anhang;
private int wert1;
private int wert2;
}
 

White_Fox

Top Contributor
Meine Daten sind mehrdimensional, z.B. Name, Anhang, Wert 1, Wert 2.
Eigentlich müsste man Matrix dazu sagen.

Ja mei, da nehmste das:
Java:
ArrayList<ArrayList<Double>> matrixMasterlist = new ArrayList<>();

ArrayList<Double> newMatrixLine = new ArrayList<>();
for(Double d = 0.0; d < 0.5; d += 0.1){
    newMatrixLine.add(d);
}

matrixMasterlist.add(newMatrixLine);

//...

An deiner Stelle würde ich das in eine eigene Klasse kapseln, die auch darauf acht gibt daß z.B. alle Zeilen die gleiche Länge haben und nach außen hin Methoden wie addRow() oder addRows( int rowNum) (fügen jeder Zeile ein Element hinzu) oder setElement(int row, int column, double element) bereitstellen.

Oder, sicher noch cleverer: Es gibt garantiert schon jemanden, der Matritzen und Matrixoperationen bereits implementiert hat. Such dir eine entsprechende Bibliothek.

Edit:
Wenn du sagst daß man eigentlich von einer Matrix reden müßte, dann unterstelle ich daß es auch eine Matrix ist. Wenn es keine Matrix ist - naja, dann kannst du zumindest das Konstrukt einer ArrayList von ArrayListen verwenden.
 

saxopraxo

Mitglied
Hallo,

der Gedanke mit der Matrix war falsch, das habe ich jetzt erkannt.
Eher mit dem Schlüsselwort ist der richtige Weg. "Name" wäre das Schlüsselwort und daran hängen dann die anderen Elemente.
Aber "LimDul" hatte die Idee mit dem Objekt. Wenn ich so darüber nachdenke, dann sind ja meine Elemente zusammen ein Objekt. Es sind ja immer die gleichen Elemente vorhanden und müssen zusammengefasst und ausgewertet werden.
Ich mache JAVA noch nicht so lange und auf diese Idee war ich garnicht gekommen.
Das müsste dann eine Liste von Objekten ergeben?

Gruss
 

White_Fox

Top Contributor
@saxopraxo Beschreibe doch bitte mal dein Problem. NICHT deinen Lösungsansatz.

Das, was du jetzt schreibst, klingt mir viel (soweit ich es, im Kontext dessen was du bisher geschrieben hast, interpretieren kann) eher nach HashMap:
Java:
HasMap<String, ArrayList<Double>> masterMap = new HashMap<>();

ArrayList<Double> list = new ArrayList<>();
for(double d = 0; d < 0.5; d += 0.1){
    list.add(d);
}

masterMap.put("Irgendein Schlüsselwort für eine Gruppe von lauter Doubles", list);
 

fhoffmann

Top Contributor
Wenn ich so darüber nachdenke, dann sind ja meine Elemente zusammen ein Objekt.
Ja, es ist immer eine gute Idee, aus zusammengehörenden Dingen eine eigene Klasse (Objekt) zu machen!
(Eine Liste von Listen hat immer einen komischen "Geruch" (mit "Geruch" meine ich: https://en.wikipedia.org/wiki/Code_smell).)
Das müsste dann eine Liste von Objekten ergeben?
Du musst nicht unbedingt eine List benutzen. Es kann auch eine Map sein.
Dann kanst du zu einem Schlüsselwort (key) ein Objekt deiner neuen Klasse (value) speichern.
 
Zuletzt bearbeitet:

saxopraxo

Mitglied
Hallo,

vielen Dank für die vielen Tips und Hinweise. Ihr habt mir sehr geholfen.
Ich werde jetzt mit dem "Objekt" arbeiten und erst mal selbst versuchen, das Programm zu erstellen.
Wenn ich dann wieder Probleme habe, dann melde ich mich wieder und frage bei Euch nach.

Gruss
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
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
E Swing Array mit Bildern in GUI darstellen Allgemeine Java-Themen 2
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
H Zweidimensionales Array - Zellen der Tabelle verbinden Allgemeine Java-Themen 2
M Zweidimensionales Array mit Binärzahlen füllen Allgemeine Java-Themen 8
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
G Array ohne Aufzählungszeichen ausgeben Allgemeine Java-Themen 6
J Wie kann ich ein Java Array als Säulendiagramm ausgeben? Allgemeine Java-Themen 2
Z 2D Array Pixels reparieren Allgemeine Java-Themen 2
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
B Polibios Array erweitern Allgemeine Java-Themen 1
R Index in einem Array löschen Allgemeine Java-Themen 10
R Index in einem Array löschen Allgemeine Java-Themen 2
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
J Array-List Bubble-Sort Allgemeine Java-Themen 12
4 Variablen Int-Array Int Zuweisen Allgemeine Java-Themen 7
J Array Allgemeine Java-Themen 8
Z Array mit unterschiedlichen Werten Allgemeine Java-Themen 1
L sortiertes Array im main aufrufen klappt nicht. Allgemeine Java-Themen 3
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
A Mit dem letzten bis zum ersten Wert aus Array rechnen Allgemeine Java-Themen 15
A Vector Strings in Array splitten Allgemeine Java-Themen 6
I Muster in Array suchen Allgemeine Java-Themen 10
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
B Zahlen manuell eingeben und in Array Speichern Allgemeine Java-Themen 2
R Wärmeleitung, 3d-Array Allgemeine Java-Themen 2
T Java Array in Methoden Allgemeine Java-Themen 1
D Erste Schritte Array von einer forschleife nach ausserhalb trasferieren Allgemeine Java-Themen 3
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
T Array in .txt oder .xml? Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben