Введение
В этом лабораторном занятии (LabEx) вы научитесь проверять, пусто ли множество (Set) в Java. Мы рассмотрим стандартный метод isEmpty(), простой и эффективный способ определить, содержит ли множество какие-либо элементы.
Вы также узнаете, как проверить размер множества с помощью метода size() и поймете, как обрабатывать потенциальное исключение NullPointerException при работе с нулевыми множествами. К концу этого лабораторного занятия вы будете свободно справляться с проверкой пустоты множеств Java в различных сценариях.
Использование метода isEmpty() для проверки множества
На этом шаге мы научимся проверять, пусто ли множество (Set) в Java с помощью метода isEmpty(). Множество (Set) представляет собой коллекцию, которая не может содержать дубликаты элементов. Метод isEmpty() является простым и эффективным способом определить, содержит ли коллекция какие-либо элементы.
Сначала создадим новый Java-файл с именем
SetCheck.javaв директории~/project. Для этого можно кликнуть правой кнопкой мыши в проводнике файлов слева и выбрать "New File", а затем ввестиSetCheck.java.Откройте файл
SetCheck.javaв редакторе и добавьте следующий код:import java.util.HashSet; import java.util.Set; public class SetCheck { public static void main(String[] args) { // Create a new HashSet Set<String> fruits = new HashSet<>(); // Check if the set is empty using isEmpty() boolean isEmptyBeforeAdd = fruits.isEmpty(); System.out.println("Is the fruits set empty before adding elements? " + isEmptyBeforeAdd); // Add some elements to the set fruits.add("Apple"); fruits.add("Banana"); fruits.add("Orange"); // Check if the set is empty after adding elements boolean isEmptyAfterAdd = fruits.isEmpty(); System.out.println("Is the fruits set empty after adding elements? " + isEmptyAfterAdd); } }Разберём новые части этого кода:
import java.util.HashSet;иimport java.util.Set;: Эти строки импортируют необходимые классы для работы сSetиHashSet.Set<String> fruits = new HashSet<>();: Эта строка создаёт новый объектHashSetс именемfruits. Мы указываем<String>, чтобы показать, что это множество будет хранить объекты типаString.boolean isEmptyBeforeAdd = fruits.isEmpty();: Эта строка вызывает методisEmpty()для множестваfruitsи сохраняет результат (либоtrue, либоfalse) в булевой переменной с именемisEmptyBeforeAdd.fruits.add("Apple");: Эта строка добавляет строку "Apple" в множествоfruits.boolean isEmptyAfterAdd = fruits.isEmpty();: Эта строка снова проверяет, пусто ли множество после добавления элементов.
Сохраните файл
SetCheck.java(Ctrl+S или Cmd+S).Теперь скомпилируем Java-программу. Откройте терминал внизу WebIDE и убедитесь, что вы находитесь в директории
~/project. Затем выполните следующую команду:javac SetCheck.javaЕсли компиляция прошла успешно, вы не увидите никакого вывода.
Наконец, запустите скомпилированную программу с помощью команды
java:java SetCheckВы должны увидеть вывод, похожий на следующий:
Is the fruits set empty before adding elements? true Is the fruits set empty after adding elements? falseЭтот вывод подтверждает, что метод
isEmpty()правильно отчёл о состоянии множества до и после добавления элементов.
Проверка размера множества с помощью метода size()
На предыдущем шаге мы научились проверять, пусто ли множество (Set) с помощью метода isEmpty(). Еще одна распространенная операция - узнать, сколько элементов содержится в множестве (Set). Для этого мы используем метод size(). Метод size() возвращает количество элементов, находящихся в множестве в данный момент.
Откройте файл
SetCheck.javaв директории~/projectв редакторе WebIDE.Измените метод
main, чтобы он включал вызовы методаsize(). Замените существующий методmainследующим кодом:import java.util.HashSet; import java.util.Set; public class SetCheck { public static void main(String[] args) { // Create a new HashSet Set<String> fruits = new HashSet<>(); // Check the size of the set before adding elements int sizeBeforeAdd = fruits.size(); System.out.println("Size of the fruits set before adding elements: " + sizeBeforeAdd); // Add some elements to the set fruits.add("Apple"); fruits.add("Banana"); fruits.add("Orange"); // Check the size of the set after adding elements int sizeAfterAdd = fruits.size(); System.out.println("Size of the fruits set after adding elements: " + sizeAfterAdd); // Add a duplicate element (Sets do not allow duplicates) fruits.add("Apple"); // Check the size again int sizeAfterDuplicateAdd = fruits.size(); System.out.println("Size of the fruits set after adding a duplicate: " + sizeAfterDuplicateAdd); } }Вот что мы добавили:
int sizeBeforeAdd = fruits.size();: Эта строка вызывает методsize()для множестваfruitsи сохраняет возвращаемое целочисленное значение (количество элементов) в переменной с именемsizeBeforeAdd.int sizeAfterAdd = fruits.size();: Эта строка проверяет размер множества после добавления трех начальных элементов.fruits.add("Apple");: Мы пытаемся добавить "Apple" еще раз. Поскольку "Apple" уже находится в множестве, эта операция не изменит содержимое множества.int sizeAfterDuplicateAdd = fruits.size();: Эта строка проверяет размер множества после попытки добавить дубликат.
Сохраните файл
SetCheck.java.Скомпилируйте измененную Java-программу в терминале:
javac SetCheck.javaОпять же, отсутствие вывода означает успешную компиляцию.
Запустите программу:
java SetCheckВы должны увидеть вывод, похожий на следующий:
Size of the fruits set before adding elements: 0 Size of the fruits set after adding elements: 3 Size of the fruits set after adding a duplicate: 3Этот вывод показывает, что метод
size()правильно сообщает количество элементов, и что добавление дубликатного элемента не увеличивает размер множества.
Обработка нулевых множеств
На предыдущих шагах мы работали с множеством (Set), которое было правильно инициализировано. Однако в реальной программировании вы можете столкнуться с ситуациями, когда переменная типа Set имеет значение null. Попытка вызвать методы, такие как isEmpty() или size(), для объекта со значением null приведет к ошибке NullPointerException, которая является распространенной ошибкой в Java. Важно корректно обрабатывать такие случаи.
Откройте файл
SetCheck.javaв директории~/projectв редакторе WebIDE.Измените метод
main, чтобы продемонстрировать, как обрабатывать нулевое множество (null set). Замените существующий методmainследующим кодом:import java.util.HashSet; import java.util.Set; public class SetCheck { public static void main(String[] args) { // Declare a Set variable but initialize it to null Set<String> colors = null; // Attempting to call isEmpty() or size() here would cause a NullPointerException // System.out.println("Is the colors set empty? " + colors.isEmpty()); // This would crash! // To safely check if a set is null or empty, we first check for null if (colors == null) { System.out.println("The colors set is null."); } else { // If it's not null, we can safely check if it's empty if (colors.isEmpty()) { System.out.println("The colors set is empty."); } else { System.out.println("The colors set is not empty and has " + colors.size() + " elements."); } } // Now, let's initialize the set and add elements colors = new HashSet<>(); colors.add("Red"); colors.add("Blue"); // Check again after initialization and adding elements if (colors == null) { System.out.println("The colors set is null."); } else { if (colors.isEmpty()) { System.out.println("The colors set is empty."); } else { System.out.println("The colors set is not empty and has " + colors.size() + " elements."); } } } }В этом обновленном коде:
Set<String> colors = null;: Мы объявляем переменнуюcolorsтипаSet, но явно устанавливаем ее значение вnull.- Мы закомментировали строку, которая вызовет ошибку
NullPointerException. if (colors == null): Это важная проверка. Перед вызовом любых методов для переменнойcolorsмы сначала проверяем, имеет ли она значениеnull.- Если
colorsне равноnull, мы затем проверяем, пусто ли множество с помощьюcolors.isEmpty(), или получаем его размер с помощьюcolors.size(). - Затем мы инициализируем
colorsновым объектомHashSetи добавляем элементы, чтобы показать другой вывод, когда множество не равноnullи не пусто.
Сохраните файл
SetCheck.java.Скомпилируйте программу в терминале:
javac SetCheck.javaЗапустите программу:
java SetCheckВы должны увидеть вывод, похожий на следующий:
The colors set is null. The colors set is not empty and has 2 elements.Это демонстрирует, как безопасно обрабатывать потенциальные нулевые значения (
null values) для переменной типаSetперед попыткой доступа к ее методам. Всегда проверяйте наnullсначала, когда работаете с ссылками на объекты, которые могут быть не инициализированы.
Резюме
В этом практическом занятии (лабораторной работе) мы научились проверять, пусто ли множество (Set) в Java. Мы начали с использования метода isEmpty(), который является стандартным и наиболее эффективным способом для выполнения такой проверки. Мы создали HashSet, проверили его пустоту до и после добавления элементов и посмотрели на булево значение, возвращаемое методом isEmpty(). Это продемонстрировало базовое использование метода isEmpty() для определения, содержит ли множество какие - либо элементы.



