Введение
В этом практическом занятии (лабораторной работе) вы научитесь проверять, существует ли определенный элемент в Java-списке (List). Мы рассмотрим различные методы для выполнения этой распространенной задачи при работе с коллекциями данных.
Сначала вы узнаете, как использовать удобный метод contains(), предоставляемый интерфейсом List. Затем вы поймете, как вручную перебирать элементы списка для проверки наличия определенного элемента, что может быть полезно в определенных сценариях. Наконец, мы рассмотрим, как обрабатывать наличие нулевых (null) элементов в списке при выполнении этих проверок.
Использование метода contains() для проверки элемента
На этом этапе мы научимся проверять, существует ли определенный элемент в Java-списке (List) с использованием метода contains(). Это распространенная задача при работе с коллекциями данных.
Сначала создадим новый Java-файл с именем ListContains.java в директории ~/project. Для этого можно щелкнуть правой кнопкой мыши в проводнике файлов слева и выбрать "New File", а затем ввести ListContains.java.
Теперь откройте файл ListContains.java в редакторе и добавьте следующий код:
import java.util.ArrayList;
import java.util.List;
public class ListContains {
public static void main(String[] args) {
// Create a List of strings
List<String> fruits = new ArrayList<>();
// Add some fruits to the list
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Mango");
// Check if the list contains "Banana"
boolean hasBanana = fruits.contains("Banana");
System.out.println("Does the list contain Banana? " + hasBanana);
// Check if the list contains "Grape"
boolean hasGrape = fruits.contains("Grape");
System.out.println("Does the list contain Grape? " + hasGrape);
}
}
Разберем этот код:
import java.util.ArrayList;иimport java.util.List;: Эти строки импортируют необходимые классы для работы со списками.List<String> fruits = new ArrayList<>();: Эта строка создает новыйArrayList, который является типомList, способным хранить объекты типаString.fruits.add("...");: Эти строки добавляют элементы (названия фруктов) в наш список.fruits.contains("Banana");: Это основа данного этапа. Методcontains()вызывается для спискаfruits. Он принимает один аргумент - элемент, наличие которого мы хотим проверить. Он возвращаетtrue, если элемент найден в списке, иfalseв противном случае.boolean hasBanana = ...;: Результат вызоваcontains()сохраняется в булевой переменной (hasBananaилиhasGrape).System.out.println("...");: Эти строки выводят результаты в консоль.
Сохраните файл ListContains.java (Ctrl+S или Cmd+S).
Теперь откройте терминал внизу WebIDE. Убедитесь, что вы находитесь в директории ~/project. Если нет, введите cd ~/project и нажмите Enter.
Скомпилируйте Java-код с использованием команды javac:
javac ListContains.java
Если ошибок нет, в директории ~/project будет создан файл ListContains.class.
Наконец, запустите скомпилированную Java-программу с использованием команды java:
java ListContains
Вы должны увидеть вывод, похожий на следующий:
Does the list contain Banana? true
Does the list contain Grape? false
Этот вывод подтверждает, что метод contains() правильно определил, присутствовали ли "Banana" и "Grape" в нашем списке.
Ручной перебор элементов списка
На предыдущем этапе мы использовали метод contains() для проверки наличия элемента. Хотя метод contains() очень удобен, иногда вам нужно проверить каждый элемент списка по отдельности. Это называется итерацией или перебором элементов списка. На этом этапе мы научимся делать это с помощью цикла for.
Откройте файл ListContains.java в директории ~/project в редакторе WebIDE.
Мы изменим существующий код, чтобы перебрать элементы списка fruits и вывести каждый элемент на экран. Замените существующий метод main следующим кодом:
import java.util.ArrayList;
import java.util.List;
public class ListContains {
public static void main(String[] args) {
// Create a List of strings
List<String> fruits = new ArrayList<>();
// Add some fruits to the list
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Mango");
// Loop through the list using a for loop
System.out.println("Printing fruits in the list:");
for (int i = 0; i < fruits.size(); i++) {
String fruit = fruits.get(i);
System.out.println(fruit);
}
}
}
Рассмотрим новые части кода:
System.out.println("Printing fruits in the list:");: Эта строка просто выводит заголовок перед тем, как мы начнем перечислять фрукты.for (int i = 0; i < fruits.size(); i++): Это стандартный циклfor.int i = 0: Мы инициализируем счетчикiзначением 0. В программировании счет часто начинается с 0.i < fruits.size(): Цикл продолжается, пока значениеiменьше общего количества элементов в спискеfruits. Методfruits.size()возвращает количество элементов в списке.i++: После каждого выполнения цикла мы увеличиваем значениеiна 1.
String fruit = fruits.get(i);: Внутри цикла методfruits.get(i)извлекает элемент из списка, находящийся в текущей позицииi. Мы сохраняем этот элемент в переменную типаStringс именемfruit.System.out.println(fruit);: Эта строка выводит текущий фрукт в консоль.
Сохраните файл ListContains.java.
Теперь скомпилируйте измененный код в терминале:
javac ListContains.java
Если компиляция прошла успешно, запустите программу:
java ListContains
Вы должны увидеть следующий вывод:
Printing fruits in the list:
Apple
Banana
Orange
Mango
Это показывает, что наш цикл for успешно перебрал все элементы списка и вывел каждый фрукт на отдельной строке. Ручной перебор элементов списка таким образом позволяет вам лучше контролировать обработку каждого элемента, что может быть полезно для более сложных задач, чем просто проверка наличия элемента.
Обработка нулевых элементов в списке
В реальном мире списки могут иногда содержать значения null, которые обозначают отсутствие значения. Если вы попытаетесь выполнить операции над значением null без предварительной проверки, ваша программа может завершиться аварийно с ошибкой NullPointerException. На этом этапе мы научимся обрабатывать нулевые элементы при переборе списка.
Откройте файл ListContains.java в директории ~/project в редакторе WebIDE.
Мы изменим код, добавив элемент со значением null в список и проверив его наличие внутри цикла. Замените существующий метод main следующим кодом:
import java.util.ArrayList;
import java.util.List;
public class ListContains {
public static void main(String[] args) {
// Create a List of strings
List<String> fruits = new ArrayList<>();
// Add some fruits to the list, including a null
fruits.add("Apple");
fruits.add("Banana");
fruits.add(null); // Adding a null element
fruits.add("Orange");
fruits.add("Mango");
// Loop through the list and handle null elements
System.out.println("Printing fruits in the list (handling nulls):");
for (int i = 0; i < fruits.size(); i++) {
String fruit = fruits.get(i);
// Check if the element is null before processing
if (fruit != null) {
System.out.println(fruit);
} else {
System.out.println("Found a null element");
}
}
}
}
Вот что мы изменили:
fruits.add(null);: Мы добавили значениеnullв список.if (fruit != null): Внутри цикла, перед тем как попытаться вывести значениеfruit, мы добавили операторifдля проверки, не является ли переменнаяfruitравнойnull.System.out.println(fruit);: Эта строка находится внутри блокаif, поэтому она будет выполняться только в том случае, еслиfruitне равноnull.else { System.out.println("Found a null element"); }: Этот блокelseвыполняется, еслиfruitравноnull, выводя сообщение вместо попытки вывести само нулевое значение.
Сохраните файл ListContains.java.
Скомпилируйте измененный код в терминале:
javac ListContains.java
Если компиляция прошла успешно, запустите программу:
java ListContains
Вы должны увидеть следующий вывод:
Printing fruits in the list (handling nulls):
Apple
Banana
Found a null element
Orange
Mango
Как вы можете видеть, программа теперь правильно определяет и обрабатывает нулевой элемент без аварийного завершения. Проверка на null является важной практикой в программировании на Java для предотвращения ошибок и создания более надежных программ.
Резюме
В этом практическом занятии (лабораторной работе) мы научились проверять, содержит ли Java-список (List) определенный элемент. Сначала мы изучили самый простой способ - использование встроенного метода contains(), который эффективно определяет наличие элемента и возвращает логическое значение (boolean).
Затем мы углубился в ручной перебор элементов списка для выполнения этой проверки, что дало более глубокое понимание того, как может работать метод contains() внутри. Наконец, мы рассмотрели важный аспект - обработку нулевых (null) элементов в списке при выполнении таких проверок, чтобы обеспечить надежность и отсутствие ошибок в коде.



