Нулевой сейф Коллекция содержит метод
Какой лучший способ сделать нуль-безопасный contains
на коллекции Java?
другими словами -
if (collection != null && collection.contains(x))
?
Я надеялся, что у Apache Commons-Collection есть что-то вроде CollectionUtils.contains(collection, x)
это просто вернет false, если коллекция была нулевой, как это происходит с size()
, который рассматривает нуль как пустую коллекцию.
Тем не менее, похоже, что такого нет - я просто пропустил это?
2 ответа
Вместо этого вы должны применить здесь Null Object Pattern и использовать пустую коллекцию, а не пустую коллекцию. Конечно, возможно, это подходит для вашей проблемы, но без контекста трудно сказать. Другими словами, я думаю, что вы решаете не ту проблему - почему collection
быть нулевым во-первых?
Делай это так:
CollectionUtils.emptyIfNull(collection).contains(x)
Существует также эквивалентная версия дляSetUtils
,MapUtils
,ListUtils
, и т. д.
Этот код длиннее, поэтому мне кажется, что он в основном полезен, когда вам нужно одно выражение для Lambda.