Нулевой сейф Коллекция содержит метод

Какой лучший способ сделать нуль-безопасный 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.

Другие вопросы по тегам