我正在寻找Java Collection Framework中不允许使用null元素的类。
你知道吗?答案 0 :(得分:47)
使用Constraints
:
import com.google.common.collect.Constraints;
...
Constraints.constrainedList(new ArrayList(), Constraints.notNull())
来自Guava以获得最大的灵活性。
更新:番石榴约束已在Release 15中弃用 - 显然没有替代。
更新2:截至目前(Guava 19.0-rc2)Constrains仍在那里,不再弃用了。但是,Javadoc中缺少它。
我担心Javadoc是正确的MapConstraint
已被Release 19弃用
答案 1 :(得分:20)
大多数Queue
实施(LinkedList
除外)都不接受null
。
EnumSet
是一种特殊用途Set
实施,不允许null
值。
答案 2 :(得分:12)
有这样的集合here的综述。
答案 3 :(得分:12)
Apache Commons Framework - CollectionUtils.addIgnoreNull
如果myObj不为null,则添加到myList。
org.apache.commons.collections.CollectionUtils.addIgnoreNull(myList, myObj)
答案 4 :(得分:4)
使用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()));
答案 5 :(得分:1)
Hashtable不允许使用null键或值。
答案 6 :(得分:1)
开始here, the Collections API Page。查看“另请参阅”部分。点击链接。允许或禁止 null 的决定由实现类决定;只需按照各种“另请参见”部分中的链接访问实现类(例如,HashMap),然后查看插入方法(通常是添加,推送或放置的变体),以查看该实现是否允许空的