Как обойти это ограничение JDK? - PullRequest
38 голосов
/ 09 августа 2011

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

Знаете ли вы один?

Ответы [ 7 ]

47 голосов
/ 09 августа 2011

Используйте Constraints:

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

из Гуава для максимальной гибкости.

ОБНОВЛЕНИЕ: Ограничения гуавы устарели в Выпуск 15 - очевидно, без замены.

ОБНОВЛЕНИЕ 2: На данный момент (Guava 19.0-rc2) Ограничения все еще там и больше не устарели,Тем не менее, он отсутствует в Javadoc .

Боюсь, что Javadoc прав, поскольку MapConstraint устарело в Release 19 , тоже

20 голосов
/ 09 августа 2011

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

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

12 голосов
/ 20 февраля 2013

Apache Commons Framework - CollectionUtils.addIgnoreNull

Добавляет в myList, если myObj не равно нулю.

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

12 голосов
/ 11 августа 2011

Собрание таких коллекций здесь .

4 голосов
/ 12 декабря 2013

Использование предикатов Google Guava (ответ @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()));
1 голос
/ 09 августа 2011

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

1 голос
/ 09 августа 2011

Hashtable не допускает нулевые ключи или значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...