Ich muss die Länge eines 2D-Arrays sowohl für die Zeile als auch für die Spalte ermitteln. Ich habe dies erfolgreich mit dem folgenden Code durchgeführt:
public class MyClass {
public static void main(String args[])
{
int[][] test;
test = new int[5][10];
int row = test.length;
int col = test[0].length;
System.out.println(row);
System.out.println(col);
}
}
Dies druckt wie erwartet 5, 10 aus.
Schauen Sie sich nun diese Zeile an:
int col = test[0].length;
Beachten Sie, dass ich tatsächlich auf eine bestimmte Zeile verweisen muss, um die Spaltenlänge zu erhalten. Für mich scheint das unglaublich hässlich. Wenn das Array außerdem definiert wurde als:
test = new int[0][10];
Dann würde der Code fehlschlagen, wenn versucht wird, die Länge zu ermitteln. Gibt es einen anderen (intelligenteren) Weg, dies zu tun?
java
arrays
multidimensional-array
user432209
quelle
quelle
Antworten:
Erwägen
Die Spaltenlängen unterscheiden sich pro Zeile. Wenn Sie einige Daten mit einem 2D-Array fester Größe sichern, stellen Sie Getter für die festen Werte in einer Wrapper-Klasse bereit.
quelle
Ein 2D-Array ist kein rechteckiges Gitter. Oder vielleicht besser, es gibt kein 2D-Array in Java.
Ausgänge
Die Arrays
test
undtest2
sind (mehr oder weniger) gleich.quelle
Es war wirklich schwer, sich daran zu erinnern
Lassen Sie uns verstehen, warum dies so ist und wie wir dies herausfinden können, wenn wir ein Array-Problem erhalten. Aus dem folgenden Code können wir erkennen, dass Zeilen = 4 und Spalten = 3 sind:
arr
Es enthält mehrere Arrays, und diese Arrays können vertikal angeordnet werden, um die Anzahl der Spalten zu ermitteln. Um die Anzahl der Zeilen zu ermitteln, müssen wir auf das erste Array zugreifen und dessen Länge berücksichtigen. In diesem Fall greifen wir auf [1, 1, 1, 1] und damit auf die Anzahl der Zeilen = 4 zu. Wenn Sie ein Problem haben, bei dem Sie das Array nicht sehen können, können Sie das Array als Rechteck mit anzeigen n X m Dimensionen und schließen Sie, dass wir die Anzahl der Zeilen erhalten können, indem wir auf das erste Array und dann auf seine Länge zugreifen. Der andere (arr.length
) ist für die Spalten.quelle
Mit Java können Sie "zerlumpte Arrays" erstellen, bei denen jede "Zeile" unterschiedliche Längen hat. Wenn Sie wissen, dass Sie ein quadratisches Array haben, können Sie Ihren geänderten Code verwenden, um sich vor einem leeren Array wie folgt zu schützen:
quelle
Wenn Sie dieses Array haben:
Du kannst das:
= 2
= 2
= 2
= 3
= 4
quelle
Auf Sprachebene gibt es keinen saubereren Weg, da nicht alle mehrdimensionalen Arrays rechteckig sind. Manchmal sind gezackte Arrays (unterschiedliche Spaltenlängen) erforderlich.
Sie können ganz einfach eine eigene Klasse erstellen, um die von Ihnen benötigten Funktionen zu abstrahieren.
Wenn Sie nicht auf Arrays beschränkt sind, funktionieren möglicherweise auch einige der verschiedenen Auflistungsklassen, z. B. eine Multimap .
quelle
Länge = Anzahl der Zeilen / Spaltenlänge
[0] .length = Anzahl der Spalten / Zeilenlänge
quelle
Versuchen Sie dieses folgende Programm für 2d Array in Java:
quelle
quelle
Mit
Java 8
, können Sie etwas elegantere wie dies zu tun:quelle
quelle