Wie kann man prüfen, ob ein Element in einem Array in Java existiert
-
05-07-2019 - |
Frage
Wenn ich eine int
Array wie folgt aufgebaut:
private int[][] map = new int[400][400];
Und ich versuche abrufen
map[100][200]
Und das Element nicht initialisiert wird, wird ich einen Compiler / Laufzeitfehler erhalten oder wird es null zurück? Und gibt es eine Funktion zu überprüfen, ob ein bestimmtes Element / Index vorhanden ist / eingestellt wurde?
Lösung
Wie Sie Ihre Array Deklaration einer primitiven Typ ist, werden Sie keine Compiler oder Laufzeitfehler erhalten -. Der Standardwert von 0 wird zurückgegeben
Wenn Ihr Array ein Array von Objekten gewesen wäre, dann wäre das Array null
für jedes Element halten nicht speziell zugeordnet.
Andere Tipps
Ich werde nicht zurückkehren null
weil int
ein primitiver Typ ist. Es wird den Standard int
Wert zurückgeben, was 0
ist.
Es gibt keine Möglichkeit zu wissen, wenn irgendein Element gesetzt wurde, kurz einen separaten boolean-Array zu halten.
In Java nur Referenz Variablen initialisiert auf null. Primitives sind garantiert entsprechende Standardwerte zurück . Für Ints ist dieser Wert 0.
Nein.
Ihre Array-Elemente sind nur groß genug int
s zu halten, in diesem Fall. Es gibt keinen Ort, um die Informationen zu speichern, wenn das Element „existiert“. Es wurde zugeteilt, so dass es existiert. In Java wird neu zugewiesenen int
Arrays initialisiert werden, um alle Elemente Null.
Sie können mit check pmd und findbugs auf Ihrer Quelle (findbugs auf der binär), und sie werden Sie Dinge wie diese erzählen.
Leider ist es nicht so aus, wie sie dieses besondere Problem zu fangen (was Sinn macht, die die Anordnung garantiert jedes Mitglied auf 0 gesetzt hat, null oder false).
Die Verwendung dieser Werkzeuge kann, werden fängt Instanz und Klassenmitglieder (die nicht-Arrays ist), die vor dem Wert verwendet werden, obwohl (ähnliche Art von Problem) gegeben wird.
Bit eines toten Thema, aber ich fand es zufällig so ich werde Stelle mein Stück Weisheit (oder was auch immer: P) bin. Sie könnten Arrays.Fill verwenden Ihren Array zu füllen, wenn es mit einem ungültigen Wert wie -1 erstellt wird. Dann können Sie leicht eine tun, wenn x <0 überprüfen, ob Sie, dass bestimmte Feldposition initialisiert hat oder nicht. Nur eine Idee ...