Quiero verificar si una colección está vacía y null
. ¿Alguien podría decirme cuál es la mejor práctica?
Actualmente, estoy comprobando lo siguiente:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
java
collections
usuario1635014
fuente
fuente
null == sampleMap
en lugar desampleMap == null
. La mayoría de las personas encuentran que este último es más legible: el primero es un remanente de otros idiomas.See Effective Java: Item 43 - Return empty arrays or collections, not nulls.
if (null = sampleMap)
en Java, obtendrá un error de compilación. Ese es precisamente el punto de mi primer comentario. La "razón" es específica del idioma, pero se ha propagado a otros idiomas a pesar de la penalidad de legibilidad porque las personas no han considerado por qué lo hacen.Respuestas:
Si usa la biblioteca de Colecciones de Apache Commons en su proyecto, puede usar los métodos
CollectionUtils.isEmpty
yMapUtils.isEmpty()
que verifican respectivamente si una colección o un mapa están vacíos o son nulos (es decir, son "nulos-seguros").El código detrás de estos métodos es más o menos lo que el usuario @icza ha escrito en su respuesta.
Independientemente de lo que haga, recuerde que cuanto menos código escriba, menos código deberá probar a medida que disminuya la complejidad de su código.
fuente
isNullOrEmpty
.Esa es la mejor manera de verificarlo. Podrías escribir un método auxiliar para hacerlo:
fuente
Map<?>
también.||
operador es un operador de cortocircuito, lo que significa que si el operando izquierdo estrue
, no evaluará el operando derecho. Entoncesm == null
, si , entoncesm.isEmpty()
no se llamará (no es necesario, el resultado estrue
).Si usa Spring frameworks, puede usar
CollectionUtils
para verificar tanto en Colecciones (Lista, Array) como en Mapa, etc.fuente
Personalmente, prefiero usar colecciones vacías en lugar de
null
y hacer que los algoritmos funcionen de una manera que para el algoritmo no importe si la colección está vacía o no.fuente
Cuando usas spring, entonces puedes usar
donde obj es cualquier [mapa, colección, matriz, algo ...]
de lo contrario: el código es:
para String best es:
fuente
Si necesita verificar nulo, ese es el camino. Sin embargo, si tiene control sobre esto, simplemente devuelva la colección vacía, siempre que pueda, y verifique solo si está vacía más adelante.
Este hilo es casi lo mismo con C #, pero los principios se aplican igualmente bien a Java. Como se mencionó allí, nulo debe devolverse solo si
fuente
Puede usar
org.apache.commons.lang.Validate
el método " notEmpty ":Validate.notEmpty(myCollection)
-> Validar que la colección de argumentos especificada no es nula ni tiene un tamaño de cero (sin elementos); de lo contrario arrojando una excepción.fuente
Verificaremos que un objeto Collection esté vacío, sea nulo o no. Estos todos los métodos que se dan a continuación están presentes en el paquete org.apache.commons.collections4.CollectionUtils.
Compruebe en Lista o establezca el tipo de objetos de colección.
Verifique el tipo de mapa de objetos.
El tipo de retorno de todos los métodos es booleano.
fuente
Para todas las colecciones, incluido el uso de mapas:
isEmpty
método que existe en estos objetos de colección. Pero tienes que hacer una comprobación nula antes:fuente