Проверка коллекций на null и пустоту в Java: best practice

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для исключения проверок как на null, так и на пустоту коллекции, рекомендуется использовать метод isEmpty() из библиотеки Apache Commons Collections.

Java
Скопировать код
import org.apache.commons.collections4.CollectionUtils;

boolean isValid = CollectionUtils.isNotEmpty(collection);

Метод CollectionUtils.isNotEmpty делает ваш код более ясным и грамотным.

Когда работаете с объектами типа Map, используйте метод MapUtils.isEmpty(...):

Java
Скопировать код
import org.apache.commons.collections4.MapUtils;

boolean isMapValid = !MapUtils.isEmpty(map);

Применение подобного рода утилит сокращает объем кода и помогает избегать возможных ошибок.

Кинга Идем в IT: пошаговый план для смены профессии

Аргументы "за" и "против": стоит ли прибегать к использованию сторонних библиотек?

Выбор между применением библиотеки и стандартными инструментами Java преимущественно зависит от сложности вашего проекта.

  • Мини-проекты: Для небольших приложений в большинстве случаев достаточно использовать стандартные методы Java:
Java
Скопировать код
if (Objects.nonNull(collection) && !collection.isEmpty()) {
  // Коллекция не null и не пуста
}
  • Большие проекты: В обширных системах библиотека Apache Commons способствует унификации и упрощает проверки.

Собственные средства Java: работа с null и пустыми коллекциями

Если у вас нет желания или возможности использовать внешние библиотеки, используйте встроенный в Java класс Objects:

Java
Скопировать код
import java.util.Objects;
import java.util.Collection;

public static boolean isValidCollection(Collection<?> collection) {
    return Objects.nonNull(collection) && !collection.isEmpty();
}

Такой метод поможет сохранить простоту и независимость вашего проекта.

Визуализация

Для большей наглядности представим класс Collection как железнодорожную станцию (🚉).

Проверка при этом является аналогом уточнения наличия поезда (данных) и его готовности к отправке:

  • 🚉? → Наличие станции (проверка на null)
  • 🚉 → Наличие поезда на станции (проверка на isEmpty)

Итог проверки:

  • 🚉🚂 – Все на борт! (Коллекция существует и она не пуста)
  • 🚫🚉 – Поездов нет. Станция отсутствует или пуста.

Такой подход позволяет минимизировать риск возникновения ошибок.

Полезные материалы

  1. Apache Commons Lang 3.14.0 API: Validate — инструменты для проверки входных данных.
  2. Guava: Google Core Libraries for Java 19.0 API: Preconditions — методы от Google для написания надёжного кода.
  3. Collection (Java Platform SE 8) — документация Oracle на тему интерфейса Collection.
  4. Objects (Java Platform SE 8) — методы класса Objects для проведения проверок на null.
  5. Java Practices->Avoid null if possible — рекомендации по написанию кода, устойчивого к null.
  6. Optional (Java Platform SE 8) — пошаговое руководство по использованию Optional для избегания null ссылок.
  7. Effective Java, 3rd Edition — учебное пособие от Джошуа Блоха, которое будет полезно как для начинающих, так и для опытных разработчиков.