Подтвердить что ты не робот

Как обойти это ограничение JDK?

Я ищу класс из Java Collection Framework, который не допускает нулевые элементы.

Знаете ли вы кого-нибудь?

4b9b3361

Ответ 1

Большинство Queue (с заметным исключением LinkedList) не принимают null.

EnumSet - это специальная реализация Set, которая не позволяет значения null.

Ответ 2

Используйте 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, тоже

Ответ 3

Здесь собраны такие коллекции здесь.

Ответ 5

Использование 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()));

Ответ 6

Hashtable не разрешает нулевые ключи или значения.

Ответ 7

Начните здесь, страницу API коллекций. Ознакомьтесь с разделом "См. Также". Следуйте ссылкам. Реализация разрешить или запретить null выполняется классом реализации; просто следуйте ссылкам в различных разделах "См. также", чтобы перейти к классам реализации (например, HashMap), а затем посмотрите на методы вставки (как правило, вариант добавления, push или put), чтобы увидеть, позволяет ли эта реализация нулевым.