Wie kann ich ein mehrdimensionales Array in Java erweitern?
Ich muss seine erste Dimension erweitern. Es ist in einem Format wie myArray[x][7]
7 bleibt 7 auf allen erweiterten Teilen.Erweitern eines mehrdimensionalen Arrays (2D)
Antwort
Wenn Sie dies tun möchten, erstellen Sie eine Klasse, die das Array als Instanzvariable enthält und alle Interaktionen damit behandelt.
Arrays in Java haben eine feste Länge, Sie können sie also nicht wirklich erweitern. Sie müssen ein neues, größeres Array erstellen und dann den Inhalt des alten Arrays in das neue Array kopieren. Wie folgt aus:
public class Test {
public static void main(String[] args) {
int[][] myArray = new int[3][7];
// Print first dimension
System.out.println(myArray.length); // prints 3
myArray = addRow(myArray);
// Print first dimension
System.out.println(myArray.length); // prints 4
}
private static int[][] addRow(int[][] previous) {
int prevRowCount = previous.length;
int[][] withExtraRow = new int[prevRowCount + 1][];
System.arraycopy(previous, 0, withExtraRow, 0, previous.length);
withExtraRow[prevRowCount] = new int[] { 1, 2, 3, 4, 5, 6, 7 };
return withExtraRow;
}
}
Sie könnte natürlich auch zum Beispiel verwenden ein ArrayList<SomeType[]>
, die dynamisch wächst. (Dies ist tatsächlich der bevorzugte Weg, wenn es um dynamisch wachsende Arrays geht.)
import java.util.*;
public class Test {
public static void main(String[] args) {
List<int[]> myArray = new ArrayList<int[]>();
// Print first dimension
System.out.println(myArray.size()); // prints 0
// Add three rows
myArray.add(new int[] { 1, 2, 3, 4, 5, 6, 7 });
myArray.add(new int[] { 11, 12, 13, 14, 15, 16, 17 });
myArray.add(new int[] { 21, 22, 23, 24, 25, 26, 27 });
// Print first dimension
System.out.println(myArray.size()); // prints 3
}
}
Sie können nicht.
Sie könnten ein neues Array mit den richtigen Dimensionen erstellen, aber ich würde empfehlen, über die ArrayList-Klasse zu lesen, die (so weit Sie wissen) dynamische Arrays zulässt.
Sie könnten auch Verfahren verwenden Arrays.copyOf, zum Beispiel:
import java.util.Arrays;
public class Array2D {
public static void main(String[] args) {
int x = 5 //For example
int[][] myArray = [x][7];
myArray = Arrays.copyOf(myArray, myArray.length + 1); //Extending for one
myArray[myArray.length - 1] = new int[]{1, 2, 3, 4, 5, 6, 7};
}
}