Проверка коллекций на null и пустоту в Java: best practice
Быстрый ответ
Для исключения проверок как на null
, так и на пустоту коллекции, рекомендуется использовать метод isEmpty()
из библиотеки Apache Commons Collections.
import org.apache.commons.collections4.CollectionUtils;
boolean isValid = CollectionUtils.isNotEmpty(collection);
Метод CollectionUtils.isNotEmpty
делает ваш код более ясным и грамотным.
Когда работаете с объектами типа Map
, используйте метод MapUtils.isEmpty(...)
:
import org.apache.commons.collections4.MapUtils;
boolean isMapValid = !MapUtils.isEmpty(map);
Применение подобного рода утилит сокращает объем кода и помогает избегать возможных ошибок.
Аргументы "за" и "против": стоит ли прибегать к использованию сторонних библиотек?
Выбор между применением библиотеки и стандартными инструментами Java преимущественно зависит от сложности вашего проекта.
- Мини-проекты: Для небольших приложений в большинстве случаев достаточно использовать стандартные методы Java:
if (Objects.nonNull(collection) && !collection.isEmpty()) {
// Коллекция не null и не пуста
}
- Большие проекты: В обширных системах библиотека Apache Commons способствует унификации и упрощает проверки.
Собственные средства Java: работа с null и пустыми коллекциями
Если у вас нет желания или возможности использовать внешние библиотеки, используйте встроенный в Java класс Objects
:
import java.util.Objects;
import java.util.Collection;
public static boolean isValidCollection(Collection<?> collection) {
return Objects.nonNull(collection) && !collection.isEmpty();
}
Такой метод поможет сохранить простоту и независимость вашего проекта.
Визуализация
Для большей наглядности представим класс Collection
как железнодорожную станцию (🚉).
Проверка при этом является аналогом уточнения наличия поезда (данных) и его готовности к отправке:
- 🚉? → Наличие станции (проверка на null)
- 🚉 → Наличие поезда на станции (проверка на isEmpty)
Итог проверки:
- 🚉🚂 – Все на борт! (Коллекция существует и она не пуста)
- 🚫🚉 – Поездов нет. Станция отсутствует или пуста.
Такой подход позволяет минимизировать риск возникновения ошибок.
Полезные материалы
- Apache Commons Lang 3.14.0 API: Validate — инструменты для проверки входных данных.
- Guava: Google Core Libraries for Java 19.0 API: Preconditions — методы от Google для написания надёжного кода.
- Collection (Java Platform SE 8) — документация Oracle на тему интерфейса Collection.
- Objects (Java Platform SE 8) — методы класса
Objects
для проведения проверок на null. - Java Practices->Avoid null if possible — рекомендации по написанию кода, устойчивого к null.
- Optional (Java Platform SE 8) — пошаговое руководство по использованию Optional для избегания null ссылок.
- Effective Java, 3rd Edition — учебное пособие от Джошуа Блоха, которое будет полезно как для начинающих, так и для опытных разработчиков.