Как проверить, пуст ли список в Java

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как эффективно проверить, является ли список в Java пустым. Мы рассмотрим стандартный метод isEmpty(), проверим размер списка с использованием метода size() и поймем, как обрабатывать возможные сценарии, когда список равен null, чтобы написать надежный и устойчивый код.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/DataStructuresGroup -.-> java/arrays_methods("Arrays Methods") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/arraylist("ArrayList") subgraph Lab Skills java/arrays_methods -.-> lab-559949{{"Как проверить, пуст ли список в Java"}} java/collections_methods -.-> lab-559949{{"Как проверить, пуст ли список в Java"}} java/exceptions -.-> lab-559949{{"Как проверить, пуст ли список в Java"}} java/arraylist -.-> lab-559949{{"Как проверить, пуст ли список в Java"}} end

Использование метода isEmpty() для проверки списка

На этом этапе мы узнаем, как проверить, является ли список в Java пустым, используя метод isEmpty(). Это распространенная задача в программировании, и метод isEmpty() предоставляет простой и эффективный способ ее решения.

Сначала создадим новый Java-файл с именем ListCheck.java в директории ~/project. Для этого можно щелкнуть правой кнопкой мыши в проводнике файлов слева и выбрать "New File", а затем ввести ListCheck.java.

Теперь откройте файл ListCheck.java в редакторе и добавьте следующий код:

import java.util.ArrayList;
import java.util.List;

public class ListCheck {

    public static void main(String[] args) {
        // Create an empty list
        List<String> emptyList = new ArrayList<>();

        // Create a list with elements
        List<String> populatedList = new ArrayList<>();
        populatedList.add("Apple");
        populatedList.add("Banana");

        // Check if the lists are empty using isEmpty()
        System.out.println("Is emptyList empty? " + emptyList.isEmpty());
        System.out.println("Is populatedList empty? " + populatedList.isEmpty());
    }
}

Разберем этот код по частям:

  • import java.util.ArrayList; и import java.util.List;: Эти строки импортируют необходимые классы для работы со списками.
  • List<String> emptyList = new ArrayList<>();: Эта строка создает новый пустой список, который может хранить объекты типа String.
  • List<String> populatedList = new ArrayList<>();: Эта строка создает еще один новый список.
  • populatedList.add("Apple"); и populatedList.add("Banana");: Эти строки добавляют элементы в список populatedList.
  • System.out.println("Is emptyList empty? " + emptyList.isEmpty());: Эта строка вызывает метод isEmpty() для списка emptyList. Метод isEmpty() возвращает true, если список не содержит элементов, и false в противном случае. Затем результат выводится в консоль.
  • System.out.println("Is populatedList empty? " + populatedList.isEmpty());: Эта строка делает то же самое для списка populatedList.

Сохраните файл ListCheck.java.

Теперь откройте терминал в нижней части WebIDE и убедитесь, что вы находитесь в директории ~/project. Если необходимо, можно использовать команду cd ~/project.

Скомпилируйте Java-код с помощью команды javac:

javac ListCheck.java

Если ошибок нет, в директории ~/project будет создан файл ListCheck.class.

Наконец, запустите скомпилированную Java-программу с помощью команды java:

java ListCheck

Вы должны увидеть вывод, похожий на следующий:

Is emptyList empty? true
Is populatedList empty? false

Этот вывод подтверждает, что метод isEmpty() правильно определил пустой список и список с элементами. Использование метода isEmpty() является предпочтительным способом проверки списка на пустоту в Java, так как он более читаем и потенциально более эффективен, чем проверка размера списка.

Проверка размера списка с помощью метода size()

На предыдущем этапе мы узнали, как проверить, является ли список пустым, используя метод isEmpty(). Хотя метод isEmpty() отлично подходит для проверки наличия элементов в списке, иногда вам нужно знать точное количество элементов в списке. Для этого в Java предоставлен метод size().

На этом этапе мы изменим файл ListCheck.java, чтобы использовать метод size() и посмотреть, как он работает.

Откройте файл ListCheck.java в редакторе WebIDE, если он еще не открыт. Он должен находиться в директории ~/project.

Теперь добавим несколько строк в метод main, чтобы вывести размер наших списков. Добавьте следующие строки после строк, где вы использовали метод isEmpty():

import java.util.ArrayList;
import java.util.List;

public class ListCheck {

    public static void main(String[] args) {
        // Create an empty list
        List<String> emptyList = new ArrayList<>();

        // Create a list with elements
        List<String> populatedList = new ArrayList<>();
        populatedList.add("Apple");
        populatedList.add("Banana");

        // Check if the lists are empty using isEmpty()
        System.out.println("Is emptyList empty? " + emptyList.isEmpty());
        System.out.println("Is populatedList empty? " + populatedList.isEmpty());

        // Get and print the size of the lists using size()
        System.out.println("Size of emptyList: " + emptyList.size());
        System.out.println("Size of populatedList: " + populatedList.size());
    }
}

Мы добавили две новые строки:

  • System.out.println("Size of emptyList: " + emptyList.size());: Эта строка вызывает метод size() для списка emptyList. Метод size() возвращает количество элементов в списке в виде целого числа.
  • System.out.println("Size of populatedList: " + populatedList.size());: Эта строка делает то же самое для списка populatedList.

Сохраните файл ListCheck.java.

Теперь вернитесь в терминал в директории ~/project. Нам нужно перекомпилировать измененный Java-код:

javac ListCheck.java

Если компиляция прошла успешно, запустите программу снова:

java ListCheck

Теперь вы должны увидеть вывод, похожий на следующий:

Is emptyList empty? true
Is populatedList empty? false
Size of emptyList: 0
Size of populatedList: 2

Как вы можете видеть, метод size() правильно сообщил, что список emptyList содержит 0 элементов, а список populatedList содержит 2 элемента.

Хотя вы можете проверить, является ли список пустым, проверив, равен ли его размер 0 (list.size() == 0), использование метода isEmpty() обычно предпочтительнее для ясности и читаемости кода. Однако метод size() необходим, когда вам нужно знать точное количество элементов в списке, например, при переборе списка или выполнении вычислений на основе количества элементов.

Обработка нулевых списков

На предыдущих этапах мы работали с списками, которые были либо пустыми, либо содержали элементы. Однако в реальном программировании переменная списка может быть равна null. Ссылка null означает, что переменная не указывает на какой-либо объект в памяти. Попытка вызвать метод, такой как isEmpty() или size(), для списка, равного null, приведет к ошибке NullPointerException, которая является распространенной ошибкой в Java.

На этом этапе мы узнаем, как безопасно обрабатывать списки, равные null, прежде чем пытаться проверить, являются ли они пустыми или получить их размер.

Откройте файл ListCheck.java в редакторе WebIDE.

Добавим новую переменную списка и установим ее значение в null. Затем продемонстрируем, что происходит, когда вы пытаетесь вызвать методы для нее без проверки на null. Измените метод main, добавив следующий код:

import java.util.ArrayList;
import java.util.List;

public class ListCheck {

    public static void main(String[] args) {
        // Create an empty list
        List<String> emptyList = new ArrayList<>();

        // Create a list with elements
        List<String> populatedList = new ArrayList<>();
        populatedList.add("Apple");
        populatedList.add("Banana");

        // Create a null list
        List<String> nullList = null;

        // Check if the lists are empty using isEmpty()
        System.out.println("Is emptyList empty? " + emptyList.isEmpty());
        System.out.println("Is populatedList empty? " + populatedList.isEmpty());

        // Get and print the size of the lists using size()
        System.out.println("Size of emptyList: " + emptyList.size());
        System.out.println("Size of populatedList: " + populatedList.size());

        // --- This part will cause an error if uncommented ---
        // System.out.println("Is nullList empty? " + nullList.isEmpty()); // This line will cause a NullPointerException
        // System.out.println("Size of nullList: " + nullList.size());   // This line will also cause a NullPointerException
        // ----------------------------------------------------

        // Safely check for null before calling methods
        System.out.println("\nSafely checking for null:");
        if (nullList == null) {
            System.out.println("nullList is null.");
        } else {
            System.out.println("Is nullList empty? " + nullList.isEmpty());
            System.out.println("Size of nullList: " + nullList.size());
        }

        if (emptyList == null) {
             System.out.println("emptyList is null.");
        } else {
             System.out.println("Is emptyList empty? " + emptyList.isEmpty());
             System.out.println("Size of emptyList: " + emptyList.size());
        }
    }
}

Мы добавили:

  • List<String> nullList = null;: Эта строка объявляет переменную списка, но устанавливает ее значение в null.
  • Закомментированные строки, которые вызовут ошибку NullPointerException.
  • Условный оператор if (nullList == null). Это ключевой момент для обработки null. Мы проверяем, является ли переменная nullList равной null прежде, чем пытаться вызвать какие-либо методы для нее. Если она равна null, мы выводим сообщение. Если она не равна null, мы можем безопасно вызывать методы isEmpty() и size().
  • Мы также добавили аналогичную проверку для emptyList, чтобы показать, что условие if работает правильно и для непустых списков.

Сохраните файл ListCheck.java.

Скомпилируйте измененный код в терминале:

javac ListCheck.java

Запустите программу:

java ListCheck

Вывод должен выглядеть следующим образом:

Is emptyList empty? true
Is populatedList empty? false
Size of emptyList: 0
Size of populatedList: 2

Safely checking for null:
nullList is null.
Is emptyList empty? true
Size of emptyList: 0

Обратите внимание, что мы успешно проверили, является ли nullList равным null, и избежали ошибки NullPointerException. Мы также подтвердили, что проверка работает правильно для emptyList.

Всегда помните проверять, может ли список (или любая ссылка на объект) быть равным null, прежде чем вызывать методы для него. Это фундаментальная практика в Java для предотвращения ошибок NullPointerException. Общим шаблоном является использование условия if (myList != null && !myList.isEmpty()) для проверки, что список не равен null и не пуст.

Резюме

В этом практическом занятии (лабораторной работе) мы научились проверять, является ли список в Java пустым. Мы начали с изучения метода isEmpty(), который предоставляет простой и эффективный способ определить, содержит ли список какие-либо элементы. Мы создали примеры пустых и заполненных списков и использовали метод isEmpty() для проверки их состояния, наблюдая за булевым результатом.

Мы также рассмотрели, как использовать метод size() для проверки пустоты списка путем сравнения его размера с нулем. Этот метод возвращает количество элементов в списке, и размер, равный 0, указывает на пустой список. Наконец, мы обратили внимание на важный аспект обработки нулевых списков перед попыткой проверить их на пустоту, показав, как предотвратить ошибку NullPointerException путем добавления проверки на null.