Как проверить, содержит ли список в Java элементы со значением null

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

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

Введение

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

После первоначальной проверки в рамках практического занятия (лабораторной работы) вы научитесь перебирать элементы списка и вручную проверять каждый элемент на наличие значения null. Этот подход позволяет получить больше контроля и обрабатывать сценарии с несколькими элементами со значением null, которые также будут рассмотрены. По завершении этого практического занятия (лабораторной работы) вы будете хорошо разбираться в различных методах определения значений null в Java-списках.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/StringManipulationGroup -.-> java/strings("Strings") java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/arrays_methods("Arrays Methods") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/arraylist("ArrayList") subgraph Lab Skills java/for_loop -.-> lab-559947{{"Как проверить, содержит ли список в Java элементы со значением null"}} java/strings -.-> lab-559947{{"Как проверить, содержит ли список в Java элементы со значением null"}} java/arrays -.-> lab-559947{{"Как проверить, содержит ли список в Java элементы со значением null"}} java/arrays_methods -.-> lab-559947{{"Как проверить, содержит ли список в Java элементы со значением null"}} java/collections_methods -.-> lab-559947{{"Как проверить, содержит ли список в Java элементы со значением null"}} java/arraylist -.-> lab-559947{{"Как проверить, содержит ли список в Java элементы со значением null"}} end

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

На этом этапе мы рассмотрим, как проверить наличие элементов со значением null в Java-списке (List) с использованием метода contains(). Хотя метод contains() обычно используется для проверки наличия определенных элементов, его также можно использовать для проверки, содержит ли список (List) значение null.

Сначала создадим новый Java-файл. В проводнике файлов слева щелкните правой кнопкой мыши в каталоге ~/project, выберите "New File" и назовите его NullCheckList.java.

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

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

public class NullCheckList {

    public static void main(String[] args) {
        // Create a List and add some elements, including null
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add(null); // Adding a null element
        names.add("Bob");

        // Check if the list contains null using contains()
        boolean containsNull = names.contains(null);

        // Print the result
        System.out.println("Does the list contain null? " + containsNull);
    }
}

Разберем новые части этого кода:

  • import java.util.List; и import java.util.ArrayList;: Эти строки импортируют необходимые классы для работы со списками (List) и динамическими массивами (ArrayList).
  • List<String> names = new ArrayList<>();: Эта строка создает новый динамический массив (ArrayList), который может хранить объекты типа String. Мы объявляем его как список (List), так как List - это интерфейс, который реализует ArrayList.
  • names.add(null);: Эта строка явно добавляет значение null в наш список.
  • boolean containsNull = names.contains(null);: Это основная часть этого этапа. Мы вызываем метод contains() для списка names, передавая null в качестве аргумента. Метод возвращает true, если список содержит null, и false в противном случае. Результат сохраняется в булевой переменной containsNull.
  • System.out.println("Does the list contain null? " + containsNull);: Эта строка выводит результат нашей проверки в консоль.

Сохраните файл (Ctrl+S или Cmd+S).

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

Скомпилируйте код с помощью javac:

javac NullCheckList.java

Если компиляция прошла успешно (отсутствие вывода означает успех), запустите скомпилированный код с помощью java:

java NullCheckList

Вы должны увидеть вывод, показывающий, содержит ли список значение null.

Перебор списка для поиска значений null

На предыдущем этапе мы использовали метод contains() для проверки, содержит ли список значение null. Хотя этот метод прост, он только сообщает, есть ли в списке значение null, но не показывает, где оно находится или сколько раз оно встречается. Более распространенным и гибким способом обработки элементов со значением null в списке является перебор списка с помощью цикла и проверка каждого элемента отдельно.

На этом этапе мы изменим программу NullCheckList.java, чтобы она проходила по списку и определяла позицию (индекс) любых элементов со значением null.

Откройте файл NullCheckList.java в редакторе WebIDE. Замените существующий метод main следующим кодом:

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

public class NullCheckList {

    public static void main(String[] args) {
        // Create a List and add some elements, including null
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add(null); // Adding a null element
        names.add("Bob");
        names.add("Charlie");
        names.add(null); // Adding another null element

        System.out.println("Checking list for null elements:");

        // Loop through the list using a for loop
        for (int i = 0; i < names.size(); i++) {
            // Get the element at the current index
            String name = names.get(i);

            // Check if the element is null
            if (name == null) {
                System.out.println("Null found at index: " + i);
            }
        }
    }
}

Рассмотрим внесенные изменения:

  • Мы добавили еще один элемент со значением null в список, чтобы продемонстрировать поиск нескольких значений null.
  • for (int i = 0; i < names.size(); i++): Это стандартный цикл for, который проходит от индекса 0 до (но не включая) размера списка names. Переменная i представляет текущий индекс.
  • String name = names.get(i);: Внутри цикла names.get(i) извлекает элемент по текущему индексу i и сохраняет его в переменную name.
  • if (name == null): Это важная проверка. Мы используем оператор равенства == для сравнения переменной name с null. Если они равны, это означает, что элемент по текущему индексу имеет значение null.
  • System.out.println("Null found at index: " + i);: Если найдено значение null, эта строка выводит сообщение, указывающее индекс, где оно было найдено.

Сохраните файл (Ctrl+S или Cmd+S).

Теперь скомпилируйте и запустите модифицированную программу из терминала в каталоге ~/project:

javac NullCheckList.java
java NullCheckList

Вы должны увидеть вывод, указывающий индексы, где были найдены элементы со значением null в списке.

Checking list for null elements:
Null found at index: 1
Null found at index: 4

Этот подход дает нам более подробную информацию о элементах со значением null в списке, что часто необходимо для правильной обработки их в вашей программе.

Обработка нескольких элементов со значением null

На предыдущем этапе мы успешно прошли по списку и определили индексы элементов со значением null. Теперь давайте расширим этот функционал и покажем, как можно обработать эти элементы. "Обработка" может означать разные вещи в зависимости от логики вашей программы, например, пропуск элемента со значением null, замена его на значение по умолчанию или выполнение определенного действия.

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

Откройте файл NullCheckList.java в редакторе WebIDE. Замените существующий метод main следующим кодом:

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

public class NullCheckList {

    public static void main(String[] args) {
        // Create a List and add some elements, including null
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add(null); // Adding a null element
        names.add("Bob");
        names.add("Charlie");
        names.add(null); // Adding another null element
        names.add("David");

        System.out.println("Processing list elements:");

        // Loop through the list using a for-each loop
        for (String name : names) {
            // Check if the element is null
            if (name == null) {
                System.out.println("Found a null element, skipping.");
            } else {
                // If the element is not null, process it
                System.out.println("Processing name: " + name);
            }
        }
    }
}

Рассмотрим изменения в этой версии:

  • Мы добавили еще один элемент, не равный null ("David"), в список.
  • for (String name : names): Это расширенный цикл for (также известный как цикл for-each). Это удобный способ проходить по элементам коллекции без использования индекса. На каждой итерации переменная name будет содержать текущий элемент из списка names.
  • if (name == null): Мы по-прежнему используем оператор == для проверки, равен ли текущий элемент (name) значению null.
  • System.out.println("Found a null element, skipping.");: Если элемент равен null, мы выводим сообщение, указывающее, что мы его пропускаем. В реальном приложении вы можете выполнить другое действие, например, записать информацию о null в журнал или присвоить значение по умолчанию.
  • else { System.out.println("Processing name: " + name); }: Если элемент не равен null, мы попадаем в блок else и выводим сообщение, указывающее, что мы обрабатываем имя, не равное null.

Сохраните файл (Ctrl+S или Cmd+S).

Теперь скомпилируйте и запустите модифицированную программу из терминала в каталоге ~/project:

javac NullCheckList.java
java NullCheckList

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

Processing list elements:
Processing name: Alice
Found a null element, skipping.
Processing name: Bob
Processing name: Charlie
Found a null element, skipping.
Processing name: David

В этом примере показан базовый способ обработки элементов со значением null при переборе списка. В зависимости от ваших конкретных потребностей вы можете заменить null на строку по умолчанию, удалить элементы со значением null из списка или выполнить другие операции. Главное - проверить на null перед попыткой использовать элемент, так как попытка вызвать методы у объекта со значением null приведет к исключению NullPointerException.

Резюме

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

Мы создали примерный список ArrayList, добавили в него как корректные элементы, так и значение null, а затем использовали names.contains(null) для выполнения проверки. Результат был выведен на консоль, что показало эффективность этого метода для базовой проверки на наличие null в списке.