Проверка на null и пустоту массива в Java: if и length
Быстрый ответ
if (array != null && array.length > 0) {
// Массив не пуст и существует
}
В данной проверке убеждаемся, что массив не равен null
и содержит элементы — готов к работе.
Погружение в детали: Разбираемся с массивами
Рассмотрим, что представляют собой массивы в Java и каковы могут быть их состояния.
Инициализированный, пустой или null: Познай свой массив
Массив в Java может быть инициализированным значениями, пустым или равным null
. Важно отметить, что null
отличается от пустого значения: такой массив не просто пуст, он как будто и не существует!
Null против пустого: Две стороны медали
Ситуация, когда array == null
, обозначает отсутствие массива, будто такого массива и не было. В то время как пустой массив существует, но не заполнен — он подобен пустому дому.
if (array == null) {
System.out.println("Призрачный массив на горизонте!"); // Массив не инициализирован
} else if (array.length == 0) {
System.out.println("Пустотельство и тишина... только крикеты."); // Конструктор отработал, но элементов в массиве нет
}
Интересный случай null элементов
Массив может быть не только пустым, но и заполненным null
-ами. Такой массив напоминает дом, заполненный воздухом — формально он не пуст, но ведь и не содержит в себе ничего заметного?
boolean isEmptyContainOnlyNulls = true;
if (array != null) {
for (Object item : array) {
if (item != null) {
isEmptyContainOnlyNulls = false;
break;
}
}
}
Такой массив создаёт у нас впечатление пустоты, хотя полностью пустым он не является.
Вместе держаться! Встречаем Apache Commons Lang
Библиотека Apache Commons Lang предлагает класс ArrayUtils
, который станет вашим опорным помощником в работе с массивами:
if (ArrayUtils.isEmpty(array)) {
System.out.println("Пустота, можно начать заполнять своим кодом!"); // Проверка на null и пустоту массива
}
Визуализация
Представьте массив как почтовый ящик, в котором хранятся письма (элементы массива):
Почтовый ящик (📬): [✉️,✉️,✉️,✉️]
Проверить есть ли почта:
if (array == null || array.length == 0)
📬: "Сегодня почты нет, можно расслабиться!"
else
📬: "Почта пришла!"
Простой способ узнать, заполнен ли ящик, или можно отдохнуть.
Используем Java 8+: Применяем Stream API
В версиях Java 8 и выше стали доступны потоки, которые позволяют эффективно работать с массивами:
boolean isNotEmptyNotGhost = array != null && Arrays.stream(array).noneMatch(Objects::isNull);
Этот код сочетает возможности Arrays.stream()
и Objects::isNull
, позволяя убедиться, что массив не является "призраком" и содержит элементы.
Полезные материалы
- Массивы (Учебные материалы Java™ > Изучение языка Java > Основы языка) — Полное погружение в мир массивов в Java.
- Массивы (Java Platform SE 8) — Документация Java API с описанием инструментов для работы с массивами.
- Objects (Java Platform SE 8) — Информация о
Objects.requireNonNull()
, которая поможет в проверках наnull
. - Java Arrays — Множество примеров использования массивов в Java.