如何解决这个JDK限制?

我正在从Java集合框架中寻找一个不允许空元素的类。

你知道吗?

大多数Queue实现(具有LinkedList的显着exception)不接受null

EnumSet是一个不允许null值的特殊用途的Set实现。

使用Constraints

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

从番石榴获得最大的灵活性。

更新:番石榴约束已被弃用在版本15 – 显然没有更换。

更新2:截至目前(番石榴19.0 – rc2) 约束仍然存在,不再弃用。 但是,它从Javadoc中丢失了。

我担心Javadoc是正确的,因为MapConstraint已经在Release 19中被弃用了

这里有一个这样的集合的综述。

Apache Commons框架 – CollectionUtils.addIgnoreNull

如果myObj不为null,则添加到myList。

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

使用Google Guava Predicates(@Joachim Sauer的回答已被弃用)

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

散列表不允许空键或值。

从这里开始,收集API页面 。 看看“另请参阅”部分。 按照链接。 执行类决定允许还是不允许null ; 只需按照各种“请参阅”部分中的链接进入实现类(例如HashMap),然后查看插入方法(通常是添加,推送或放置的变体),以查看该实现是否允许为