Я ищу класс из Java Collection Framework, который не допускает нулевые элементы.
Знаете ли вы кого-нибудь?
Я ищу класс из Java Collection Framework, который не допускает нулевые элементы.
Знаете ли вы кого-нибудь?
Большинство Queue
(с заметным исключением LinkedList
) не принимают null
.
EnumSet
- это специальная реализация Set
, которая не позволяет значения null
.
Используйте Constraints
:
import com.google.common.collect.Constraints;
...
Constraints.constrainedList(new ArrayList(), Constraints.notNull())
из Guava для максимальной гибкости.
UPDATE: Ограничения Guava устарели в Release 15 - очевидно без замены.
ОБНОВЛЕНИЕ 2: На данный момент (Guava 19.0-rc2) Ограничения все еще существуют и не устаревают больше, Однако он отсутствует в Javadoc.
Я боюсь, что Javadoc прав, поскольку MapConstraint
устарели в Release 19, тоже
Здесь собраны такие коллекции здесь.
Apache Commons Framework - CollectionUtils.addIgnoreNull
Добавляет в myList, если myObj не является нулевым.
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()));
Hashtable не разрешает нулевые ключи или значения.
Начните здесь, страницу API коллекций. Ознакомьтесь с разделом "См. Также". Следуйте ссылкам. Реализация разрешить или запретить null выполняется классом реализации; просто следуйте ссылкам в различных разделах "См. также", чтобы перейти к классам реализации (например, HashMap), а затем посмотрите на методы вставки (как правило, вариант добавления, push или put), чтобы увидеть, позволяет ли эта реализация нулевым.