Ich verwende ArrayList<String>
und füge Daten zu bestimmten Indizes hinzu. Wie kann ich überprüfen, ob ein bestimmter Index vorhanden ist?
Soll ich einfach get()
und den Wert überprüfen? Oder soll ich auf eine Ausnahme warten? Gibt es eine andere Art und Weise?
Aktualisieren
Vielen Dank für Ihre Antworten, aber da ich nur bestimmte Indizes hinzufüge, zeigt mir die Länge der Liste nicht, welche verfügbar sind.
get()
und prüfen , obnull
- verlassen Sie sich nicht auf Ausnahmen though. ErwägenHashTable
Antworten:
Die Methode
arrayList.size()
gibt die Anzahl der Elemente in der Liste zurück. Wenn der Index also größer oder gleich dem istsize()
, ist er nicht vorhanden.quelle
size()
" sein, da es sich um einen auf Null basierenden Index handelt.index = 0
und meinerlist.size() == 0
auch. Wenn ich das erste Mal nachschaue, wird es wahr sein und ich werde die Liste vorbereiten, um Dinge zu tun. Aber das nächste Mal bei diesem Index bleibt mein Index erhalten,index = 0
und jetzt initialisiere ich das Element in der Liste neu, als ich eigentlich etwas tun sollte. Der erste Gedanke ist zu&&
einer zweiten Bedingung wie,list.get(index) == null
aber dass nicht funktioniert, ist, warum es Fragen wie diese gibtWährend Sie ein Dutzend Vorschläge zur Verwendung der Größe Ihrer Liste erhalten haben, die für Listen mit linearen Einträgen funktionieren, schien niemand Ihre Frage zu lesen.
Wenn Sie Einträge manuell an verschiedenen Indizes hinzufügen, funktioniert keiner dieser Vorschläge, da Sie nach einem bestimmten Index suchen müssen.
Die Verwendung von if (list.get (index) == null) funktioniert ebenfalls nicht, da get () eine Ausnahme auslöst , anstatt null zurückzugeben.
Versuche dies:
Hier wird ein neuer Eintrag hinzugefügt, wenn der Index nicht existiert. Sie können es ändern, um etwas anderes zu tun.
quelle
try/catch
für diese Art von Arbeit zu vermeiden. Dadurch wird Ihr Programm um 50% oder mehr verlangsamt. Die Fehlerprüfung fügt Ihrem vorhandenen Code wie ein Gurt hinzu, um ihn zu verlangsamen. Besser, um ihn in kritischen Bereichen zu vermeiden. Prüfen auflength
in diesem Fall ist das Beste , was man tun kann, da dieindex
immer geringer sein wird dann dielength
, alteindex
'wird s verschoben erhalten und neu gewordenindex
ist , wenn Sieremove
sie also, warum die Regelprüfung fürlength
immer funktionieren wird.Das brauchen Sie ...
Warum nicht ein einfaches altes Array verwenden? Der indizierte Zugriff auf eine Liste ist meiner Meinung nach ein Codegeruch.
quelle
Normalerweise überprüfe ich nur, ob der Index kleiner als die Arraygröße ist
Wenn Sie auch befürchten, dass der Index ein negativer Wert ist, verwenden Sie Folgendes
quelle
In Bezug auf Ihr Update (was wahrscheinlich eine andere Frage sein sollte). Sie sollten ein Array dieser Objekte anstelle einer ArrayList verwenden, damit Sie den Wert einfach auf null überprüfen können:
Beste Übung
Wenn Sie nicht Hunderte von Einträgen in Ihrem Array haben, sollten Sie es als Klasse organisieren, um die magischen Zahlen 3,8 usw. loszuwerden.
Der Kontrollfluss mit Ausnahme ist eine schlechte Praxis.
quelle
Da
java-9
es eine Standardmethode gibt, um zu überprüfen, ob ein Index zum Array gehört - Objects # checkIndex () :quelle
of()
Methode auch in hinzugefügt wird Java 9 zur Klasse Liste : docs.oracle.com/javase/9/docs/api/java/util/List.html#of--Sie können die Größe eines
ArrayList
mit dersize()
Methode überprüfen . Dies gibt den maximalen Index +1 zurückquelle
ein einfacher Weg, dies zu tun:
quelle
Schneller und schmutziger Test, ob ein Index vorhanden ist oder nicht. in Ihrer Implementierung Liste ersetzen Mit Ihrer Liste testen Sie.
oder für zweidimensionale ArrayLists ...
quelle
.length
hat ,list.size()
aber es ist keine große Sache , ich mag diese ganze Zeit vermassele haha ich auf Compiler angewiesen , mich zu führen , dass man auf. Sie haben wahrscheinlich an primitive ArraysWenn Ihr Index kleiner als die Größe Ihrer Liste ist, existiert er möglicherweise mit
null
Wert. Wenn der Index größer ist, können Sie aufrufenensureCapacity()
, um diesen Index verwenden zu können.Wenn Sie überprüfen möchten, ob ein Wert in Ihrem Index vorhanden ist
null
oder nicht, rufen Sie anget()
quelle
Sie können die Größe des Arrays überprüfen.
quelle