Come aggirare questo limite JDK?

Sto cercando una class da Java Collection Framework che non consenta elementi null.

Ne conosci uno?

La maggior parte delle implementazioni delle Queue (con l’eccezione notevole di LinkedList ) non accettano null .

EnumSet è un’implementazione Set scopi speciali che non consente valori null .

Usa Constraints :

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

da Guava per la massima flessibilità.

UPDATE: Guava Constraints è stato deprecato nella Release 15 – apparentemente senza sostituzione.

AGGIORNAMENTO 2: A partire da ora (Guava 19.0-rc2) Vincoli è ancora lì e non più deprecato. Tuttavia, manca dal Javadoc .

Temo che Javadoc abbia ragione visto che MapConstraint è stato deprecato anche nella versione 19

C’è una carrellata di tali raccolte qui .

Apache Commons Framework – CollectionUtils.addIgnoreNull

Aggiunge a myList se myObj non è nullo.

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

Utilizzo dei Google Guava Predicates (la risposta di @Joachim Sauer è deprecata)

 //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 non consente chiavi o valori nulli.

Inizia qui, la pagina delle API delle collezioni . Controlla la sezione “Vedi anche”. Segui i collegamenti. La decisione di consentire o meno nulla è presa dalla class di implementazione; basta seguire i collegamenti nelle varie sezioni “Vedi anche” per arrivare alle classi di implementazione (ad esempio, HashMap) quindi esaminare i metodi di inserimento (generalmente una variazione su add, push o put) per vedere se tale implementazione consente null .