Метод clear() класса Java LinkedList
clear()Этот метод часто используется в JavaLinkedListпредоставляемый классом, используется для удаления всех элементов из связного списка. После вызова этого метода связный список становится пустым списком.
Синтаксис метода
public void clear()
Описание метода
clear()Основные функции метода:
- Remove
LinkedListвсе элементы в - Сбросить размер связного списка до 0
- Не влияет на вместимость связного списка, потому что
LinkedListнет ограничения по вместимости
Примеры использования
Базовое использование
Пример
import java.util.LinkedList;
public class ClearExample {
public static void main(String[] args) {
// Создаём LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Добавить элементы
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
System.out.println("LinkedList до очистки: " + fruits);
System.out.println("Размер до очистки: " + fruits.size());
// Используйте метод clear() для очистки связного списка
fruits.clear();
System.out.println("LinkedList после очистки: " + fruits);
System.out.println("Размер после очистки: " + fruits.size());
}
}
public class ClearExample {
public static void main(String[] args) {
// Создаём LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Добавить элементы
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
System.out.println("LinkedList до очистки: " + fruits);
System.out.println("Размер до очистки: " + fruits.size());
// Используйте метод clear() для очистки связного списка
fruits.clear();
System.out.println("LinkedList после очистки: " + fruits);
System.out.println("Размер после очистки: " + fruits.size());
}
}
Вывод:
清空前的链表: [Apple, Banana, Cherry] 清空前的大小: 3 清空后的链表: [] 清空后的大小: 0
Принцип реализации
В JavaLinkedListреализации,clear()метод работает следующим образом:
- Пройти по всем узлам связного списка
- Установить ссылки на предшествующий и последующий узлы для каждого узла в null
- Установить головной узел (первый) и хвостовой узел (последний) связного списка в null
- Установить размер связного списка равным 0
Такой подход к реализации помогает сборщику мусора освобождать объекты узлов, которые больше не используются.
Характеристики метода
- Временная сложность: O(n) - необходимо обойти все узлы
- Пространственная сложность: O(1) - дополнительное место для хранения не требуется
- Потокобезопасность: Не потокобезопасен, требует внешней синхронизации в многопоточной среде
- Возвращаемое значение: None (void)
Примечания
- После вызова
clear()метода все элементы связного списка будут удалены и не могут быть восстановлены. - Если связный список совместно используется несколькими ссылками, все ссылки увидят результат очистки связного списка.
- После очистки связного списка можно добавлять новые элементы.
- и
new LinkedList<>()В отличие от создания нового экземпляра,clear()метод повторно использует существующий объект.
Сравнение с другими методами
| Метод | Функция | Временная сложность | Изменяет ли он исходный связанный список |
|---|---|---|---|
| clear() | Очистить все элементы | O(n) | Да |
| removeAll() | Удалить все элементы из указанной коллекции | O(n*m) | Да |
| new LinkedList<>() | Создать новый пустой связанный список | O(1) | нет |
Практические сценарии применения
clear()Метод особенно полезен в следующих сценариях:
- Повторное использование объектов связанного списка: когда нужно повторно использовать тот же объект связанного списка
- Управление памятью: когда нужно освободить память, занимаемую связанным списком
- Сброс состояния: когда нужно сбросить состояние связанного списка во время работы алгоритмов или обработки данных
Пример
// Практический пример применения: обработка пакетных данных
LinkedList<Data> dataBuffer = new LinkedList<>();
// Этап 1: сбор данных
collectData(dataBuffer);
// Обработать данные
processData(dataBuffer);
// Очистить буфер, чтобы подготовиться к следующей партии данных
dataBuffer.clear();
// Этап 2: Собрать новые данные
collectData(dataBuffer);
LinkedList<Data> dataBuffer = new LinkedList<>();
// Этап 1: сбор данных
collectData(dataBuffer);
// Обработать данные
processData(dataBuffer);
// Очистить буфер, чтобы подготовиться к следующей партии данных
dataBuffer.clear();
// Этап 2: Собрать новые данные
collectData(dataBuffer);
Используя этотclear()Правильно используя метод, вы можете повысить эффективность и удобочитаемость вашего кода.
Java LinkedList