2012-08-16 13 views
9

en Java, tengo el siguiente método:cómo determinar si una lista de cadena contiene elementos nulos o vacíos

public String normalizeList(List<String> keys) { 
    // ... 
} 

Quiero comprobar que keys:

  • No es null sí; y
  • No está vacío (size() == 0); y
  • No tiene String elementos que son null; y
  • no tiene ningún String elementos que son vacía ("")

Este es un método de utilidad que va a ir en un "bien común" al estilo de JAR (la clase Wil ser algo así como DataUtils). Aquí es lo que tengo, pero creo que su incorrecta:

public String normalize(List<String> keys) { 
    if(keys == null || keys.size() == 0 || keys.contains(null) || keys.contains("")) 
     throw new IllegalArgumentException("Bad!"); 

    // Rest of method... 
} 

Creo que los últimos 2 cheques por keys.contains(null) y keys.contains("") son incorrectas y es probable que producen excepciones de tiempo de ejecución. Sé que puedo recorrer la lista dentro de la declaración if, y verificar si hay vacíos/nulos allí, pero estoy buscando una solución más elegante si existe.

+0

* "Creo que los últimos 2 cheques para keys.contains (null) y keys.contains (" ") son incorrectas y es probable que el tiempo de ejecución lanzado excepciones. "*: ¿Por qué? ¿Qué excepción esperas? – assylias

+0

keys.contains (null) estará bien, pero keys.contains ("") solo funcionará en ciertas situaciones, pero no debe lanzar una excepción. –

+1

Hombre, tiene demasiados nulos volando alrededor de su aplicación ... –

Respuesta

23
keys.contains(null) || keys.contains("") 

no lanza ninguna excepción de tiempo de ejecución y los resultados true si la lista tiene ya sea nula (o) cadena vacía.

3

Esto se ve muy bien a mí, las únicas excepciones que se obtiene de keys.contains(null) y keys.contains("") serían si keys sí era null.

Sin embargo, como lo comprueba primero, en este punto keys no es , por lo que no se producirán excepciones en el tiempo de ejecución.

0

No estoy seguro, pero ¿no hay alguna clase auxiliar en la biblioteca ApacheCommon para hacer eso? como cuando se tiene la estaVacia para una cadena y tiene isNullOrEmpty en la biblioteca Apache Commons

0

Comprobar la lista en una sola pasada

public static boolean empty(String s) { 
    if (s == null) 
     return true; 
    else if (s.length() == 0) 
     return true; 
    return false; 
    } 

    public String normalize(List<String> keys) { 
    if(keys == null || keys.size() == 0) 
     throw new IllegalArgumentException("Bad!"); 
    for (String key: keys) 
     if(empty(key)) 
     throw new IllegalArgumentException("Empty!"); 

    // Rest of method... 
    return null; 
    } 
Cuestiones relacionadas