Estoy buscando una clase de Java Collection Framework que no permita elementos nulos.¿Cómo solucionar esta limitación de JDK?
usted conoce uno?
Estoy buscando una clase de Java Collection Framework que no permita elementos nulos.¿Cómo solucionar esta limitación de JDK?
usted conoce uno?
La mayoría de las implementaciones de Queue
(con la notable excepción de LinkedList
) no aceptan null
.
EnumSet
es una implementación de propósito especial Set
que no permite null
valores.
'EnumSet' sólo funciona con enumeraciones ... –
Hashtable no permite llaves o valores nulos.
mi bien, eso es una explosión del pasado! Ni siquiera es una "Colección", no importa una "Lista". – fommil
Uso Constraints
:
import com.google.common.collect.Constraints;
...
Constraints.constrainedList(new ArrayList(), Constraints.notNull())
de Guava para una máxima flexibilidad.
ACTUALIZACIÓN: Restricciones de guayaba ya no se utiliza en Release 15 - aparentemente sin reemplazo.
ACTUALIZACIÓN 2: A partir de ahora (Guava 19.0-rc2) Constrains todavía está allí y ya no está en desuso. Sin embargo, falta en el Javadoc.
me temo que el Javadoc es justo como MapConstraint
han quedado en desuso en Release 19, también
+1 por su respuesta, pero quiero seguir con Java Framework;) – Stephan
OK, entonces puedo ofrecerle, por ejemplo. 'java.util.concurrent.ConcurrentSkipListSet' de JDK. O 'Collections.newSetFromMap (nuevo ConcurrentHashMap
Lamentablemente 'Restraints' está en desuso y está programado para su eliminación en Guava 16.0 :-( –
inicio here, the Collections API Page. Consulte la sección "Ver también". Sigue los enlaces. La decisión de permitir o denegar null la toma la clase implementadora; simplemente sigue los enlaces en los diversos "Véase también" secciones para llegar a las clases de ejecución (por ejemplo, HashMap) luego mirar a los métodos de inserción (generalmente una variación de complemento, empujar, o poner) para ver si esa aplicación permite nula.
Apache Commons Framework - CollectionUtils.addIgnoreNull
se suma a MyLIST si myObj no es nulo.
org.apache.commons.collections.CollectionUtils.addIgnoreNull(myList, myObj)
Usando Google guayaba predicados (la respuesta de @Joachim Sauer es obsoleto)
//list is the variable where we want to remove null elements
List nullRemovedList=Lists.newArrayList(Iterables.filter(list, Predicates.notNull()));
//Or convert to Immutable list
List nullRemovedList2=ImmutableList.copyOf(Iterables.filter(list, Predicates.notNull()));
¿Qué debe suceder? Si lo que desea es hacer caso omiso de list.add (nulo) Me gustaría hacer una subclase de su aplicación favorita, sobrescribir agregar() y compruebe si hay valor nulo – leifg
Tal vez la mejor manera de hacerlo es de no introducir nunca nulos en el primer lugar? Tolerar (y por lo tanto proteger contra) nulos suele ser una práctica deficiente. –
@leifg ¡No sobrescriba simplemente agregar sino también agregar todo! De lo contrario, puede que te atrape una sorpresa interesante. – Voo