Je veux vérifier si une collection est vide et null
. Quelqu'un pourrait-il me faire part de la meilleure pratique?
Actuellement, je vérifie comme ci-dessous:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
java
collections
user1635014
la source
la source
null == sampleMap
plutôt quesampleMap == null
. La plupart des gens trouvent ce dernier plus lisible - le premier est un résidu d'autres langues.See Effective Java: Item 43 - Return empty arrays or collections, not nulls.
if (null = sampleMap)
en Java, vous obtiendrez une erreur de compilation. C'est précisément l'objet de mon premier commentaire. La «raison» de cela est spécifique à la langue, mais a été propagée à d'autres langues malgré la pénalité de lisibilité parce que les gens n'ont pas réfléchi à la raison pour laquelle ils le font.Réponses:
Si vous utilisez la bibliothèque Apache Commons Collections dans votre projet, vous pouvez utiliser les méthodes
CollectionUtils.isEmpty
etMapUtils.isEmpty()
qui vérifient respectivement si une collection ou une carte est vide ou nulle (c'est-à-dire qu'elles sont "null-safe").Le code derrière ces méthodes est plus ou moins ce que l'utilisateur @icza a écrit dans sa réponse.
Peu importe ce que vous faites, n'oubliez pas que moins vous écrivez de code, moins vous devez tester de code à mesure que la complexité de votre code diminue.
la source
isNullOrEmpty
.C'est le meilleur moyen de le vérifier. Vous pouvez écrire une méthode d'aide pour le faire:
la source
Map<?>
.||
opérateur est un opérateur de court-circuit, ce qui signifie que si l'opérande de gauche l'esttrue
, il n'évaluera pas l'opérande de droite. Donc, sim == null
, alorsm.isEmpty()
ne sera pas appelé (pas nécessaire, le résultat esttrue
).Si vous utilisez des frameworks Spring, vous pouvez utiliser
CollectionUtils
pour vérifier à la fois les collections (liste, tableau) et la carte, etc.la source
Personnellement, je préfère utiliser des collections vides au lieu de
null
et faire fonctionner les algorithmes de telle sorte que pour l'algorithme, peu importe si la collection est vide ou non.la source
Lorsque vous utilisez le printemps, vous pouvez utiliser
où obj est n'importe quel [carte, collection, tableau, aything ...]
sinon: le code est:
pour String best est:
la source
Si vous devez vérifier la valeur null, c'est le chemin. Cependant, si vous avez le contrôle, renvoyez simplement la collection vide, chaque fois que vous le pouvez, et ne vérifiez que la collection vide plus tard.
Ce fil est à peu près la même chose avec C #, mais les principes s'appliquent également à java. Comme mentionné ici, null ne doit être retourné que si
la source
Vous pouvez utiliser
org.apache.commons.lang.Validate
la méthode " notEmpty " de:Validate.notEmpty(myCollection)
-> Valider que la collection d'arguments spécifiée n'est ni nulle ni une taille de zéro (aucun élément); sinon lever une exception.la source
Nous vérifierons qu'un objet Collection est vide, nul ou non. ces toutes les méthodes qui sont données ci-dessous, sont présentes dans le package org.apache.commons.collections4.CollectionUtils.
Vérifier sur la liste ou définir le type d'objets de collection.
Vérifiez le type de carte des objets.
Le type de retour de toutes les méthodes est booléen.
la source
Pour toutes les collections, y compris map use:
isEmpty
method qui est là sur ces objets de collection. Mais vous devez faire une vérification nulle avant:la source