The API for the Java Set interface states:
For example, some implementations prohibit
null
elements and some have restrictions on the types of their elements
I am looking for a basic Set implementation that does not require ordering (as ArrayList provides for the List interface) and that does not permit null
. TreeSet, HashSet, and LinkedHashSet all allow null elements. Additionally, TreeSet has the requirement that elements implement Comparable.
It seems that no such basic Set
exists currently. Does anyone know why? Or if one does exist where I can find it?
[Edit]: I do not want to allow null
s, because later in the code my class will iterate over all elements in the collection and call a specific method. (I'm actually using HashSet<MyRandomObject
>). I would rather fail fast than fail later or accidentally incur some bizarre behavior due to a null
being in the set.
Hashtable does not allow null values......
for me, I didn't find one, so I
overrode the add function
Yes -- in the docs for
com.google.common.collect.ImmutableSet
:Why do you not want to allow
null
?Do you want to throw an exception if
null
is added to your set? If so, just do something like this:HashSet
'saddAll()
callsadd()
repeatedly, so this is the only method you'd have to override.You may also wish to check out Google Collections. They are more null phobic, I believe.
I am not sure of a type which this is true. But could you not inherit from a collection or HashTable of your choice and override the Add method, throwing an exception if the element is null?