Введение
В этом практическом занятии (лабораторной работе) вы научитесь проверять, содержит ли Java-список (List) элементы со значением null. Мы рассмотрим различные методы для достижения этой цели, начиная с простого метода contains(). Вы узнаете, как использовать contains(null) для быстрого определения наличия значения null в списке.
После первоначальной проверки в рамках практического занятия (лабораторной работы) вы научитесь перебирать элементы списка и вручную проверять каждый элемент на наличие значения null. Этот подход позволяет получить больше контроля и обрабатывать сценарии с несколькими элементами со значением null, которые также будут рассмотрены. По завершении этого практического занятия (лабораторной работы) вы будете хорошо разбираться в различных методах определения значений null в Java-списках.
Использование метода 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 в списке.



