Ich möchte überprüfen, ob eine Sammlung leer ist und null
. Könnte mir bitte jemand die beste Vorgehensweise mitteilen?
Derzeit überprüfe ich Folgendes:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
java
collections
user1635014
quelle
quelle
null == sampleMap
eher als verwendensampleMap == null
. Die meisten Leute finden Letzteres besser lesbar - Ersteres ist ein Überbleibsel aus anderen Sprachen.See Effective Java: Item 43 - Return empty arrays or collections, not nulls.
if (null = sampleMap)
in Java schreiben , wird ein Kompilierungsfehler angezeigt . Genau darum geht es in meinem ersten Kommentar. Der "Grund" dafür ist sprachspezifisch, wurde jedoch trotz der Lesbarkeitsstrafe auf andere Sprachen übertragen, da die Leute nicht darüber nachgedacht haben, warum sie das tun.Antworten:
Wenn Sie die Apache Commons-Sammlungsbibliothek in Ihrem Projekt verwenden, können Sie die Methoden
CollectionUtils.isEmpty
undMapUtils.isEmpty()
verwenden, die jeweils prüfen, ob eine Sammlung oder eine Karte leer oder null ist (dh sie sind "null-sicher").Der Code hinter diesen Methoden ist mehr oder weniger der, den Benutzer @icza in seiner Antwort geschrieben hat.
Unabhängig davon, was Sie tun, denken Sie daran, dass je weniger Code Sie schreiben, desto weniger Code Sie testen müssen, da die Komplexität Ihres Codes abnimmt.
quelle
isNullOrEmpty
.Das ist der beste Weg, um es zu überprüfen. Sie könnten eine Hilfsmethode schreiben, um dies zu tun:
quelle
Map<?>
.||
Operator ist ein Kurzschlussoperator. Wenn der linke Operand isttrue
, wird der rechte Operand nicht ausgewertet. Also wennm == null
, dannm.isEmpty()
wird nicht aufgerufen (nicht benötigt, das Ergebnis isttrue
).Wenn Sie Spring-Frameworks verwenden, können Sie
CollectionUtils
sowohl Sammlungen (Liste, Array) als auch Karte usw. überprüfen.quelle
Persönlich bevorzuge ich leere Sammlungen anstelle von
null
und lasse die Algorithmen so arbeiten, dass es für den Algorithmus keine Rolle spielt, ob die Sammlung leer ist oder nicht.quelle
Wenn Sie Feder verwenden, können Sie verwenden
wo obj ist eine [Karte, Sammlung, Array, alles ...]
sonst: der Code ist:
für String am besten ist:
quelle
Wenn Sie nach null suchen müssen, ist dies der Weg. Wenn Sie dies jedoch kontrollieren können, geben Sie einfach die leere Sammlung zurück, wann immer Sie können, und prüfen Sie später nur, ob sie leer ist.
Dieser Thread ist ungefähr dasselbe mit C #, aber die Prinzipien gelten genauso gut für Java. Wie dort erwähnt, sollte null nur zurückgegeben werden, wenn
quelle
Sie können die
org.apache.commons.lang.Validate
" notEmpty " -Methode verwenden:Validate.notEmpty(myCollection)
-> Überprüfen Sie, ob die angegebene Argumentensammlung weder null noch eine Größe von null hat (keine Elemente). Andernfalls wird eine Ausnahme ausgelöst.quelle
Wir prüfen, ob ein Collection-Objekt leer ist, null oder nicht. Diese alle unten angegebenen Methoden sind im Paket org.apache.commons.collections4.CollectionUtils enthalten.
Überprüfen Sie die Liste oder legen Sie den Typ der Sammlungsobjekte fest.
Überprüfen Sie den Kartentyp der Objekte.
Der Rückgabetyp aller Methoden ist boolesch.
quelle
Verwenden Sie für alle Sammlungen einschließlich der Karte die
isEmpty
Methode, die für diese Sammlungsobjekte vorhanden ist. Sie müssen jedoch vorher eine Nullprüfung durchführen:quelle