Comment contourner cette limitation JDK?

Je recherche une classe de Java Collection Framework qui ne permettrait pas les éléments null.

Vous en connaissez un?

La plupart des implémentations de Queue (à l’exception notable de LinkedList ) n’acceptent pas la valeur null .

EnumSet est une implémentation d’ Set spéciale qui n’autorise pas null valeurs null .

Utiliser des Constraints :

 import com.google.common.collect.Constraints; ... Constraints.constrainedList(new ArrayList(), Constraints.notNull()) 

de goyave pour un maximum de flexibilité.

UPDATE: Guava Constraints est obsolète dans la version 15 – apparemment sans remplacement.

MISE À JOUR 2: À partir de maintenant (Guava 19.0-rc2) Les contraintes sont toujours présentes et ne sont plus obsolètes. Cependant, il manque au Javadoc .

J’ai bien peur que le Javadoc soit correct car MapConstraint est également devenu obsolète dans la version 19

Il y a un tour d’horizon de ces collections ici .

Framework Apache Commons – CollectionUtils.addIgnoreNull

Ajoute à myList si myObj n’est pas nul.

org.apache.commons.collections.CollectionUtils.addIgnoreNull(myList, myObj)

Utilisation des prédicats Google Guava (la réponse de @Joachim Sauer est déconseillée)

 //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())); 

Hashtable n’autorise pas les clés ou les valeurs null.

Commencez ici, la page API Collections . Consultez la section “Voir aussi”. Suivez les liens. La décision d’autoriser ou d’interdire NULL est prise par la classe d’implémentation; suivez simplement les liens dans les différentes sections “Voir aussi” pour accéder aux classes d’implémentation (par exemple, HashMap), puis examinez les méthodes d’insertion (généralement une variante de add, push ou put) pour voir si cette implémentation autorise null .