Método clear() de Java LinkedList
clear()En Java, el método esLinkedListun método común proporcionado por la clase, utilizado para eliminar todos los elementos de la lista enlazada. Después de llamar a este método, la lista enlazada se convierte en una lista vacía.
Sintaxis del método
public void clear()
Función del método
clear()La función principal del método es:
- Eliminar
LinkedListtodos los elementos de la LinkedList - Restablecer el tamaño (size) de la lista enlazada a 0
- No afecta la capacidad (capacity) de la lista enlazada, porque
LinkedListno tiene límite de capacidad
Ejemplo de uso
Uso básico
Ejemplo
import java.util.LinkedList;
public class ClearExample {
public static void main(String[] args) {
// Crear una LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Agregar elementos
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
System.out.println("Lista antes de limpiar: " + fruits);
System.out.println("Tamaño antes de limpiar: " + fruits.size());
// Usar el método clear() para vaciar la lista enlazada
fruits.clear();
System.out.println("Lista después de limpiar: " + fruits);
System.out.println("Tamaño después de limpiar: " + fruits.size());
}
}
public class ClearExample {
public static void main(String[] args) {
// Crear una LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Agregar elementos
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
System.out.println("Lista antes de limpiar: " + fruits);
System.out.println("Tamaño antes de limpiar: " + fruits.size());
// Usar el método clear() para vaciar la lista enlazada
fruits.clear();
System.out.println("Lista después de limpiar: " + fruits);
System.out.println("Tamaño después de limpiar: " + fruits.size());
}
}
Salida:
清空前的链表: [Apple, Banana, Cherry] 清空前的大小: 3 清空后的链表: [] 清空后的大小: 0
Principio de implementación
En Java,LinkedListen la implementación,clear()el método funciona mediante los siguientes pasos:
- Recorrer todos los nodos de la lista enlazada
- Establecer las referencias anterior y posterior de cada nodo a null
- Establecer el nodo cabeza (first) y el nodo cola (last) de la lista enlazada a null
- Establecer el tamaño (size) de la lista enlazada a 0
Esta implementación ayuda al recolector de basura a reclamar los objetos de nodo que ya no se utilizan.
Características del método
- Complejidad temporal: O(n) - requiere recorrer todos los nodos
- Complejidad espacial: O(1) - no requiere espacio de almacenamiento adicional
- Seguridad de hilos: No es seguro para hilos; en entornos multihilo se requiere sincronización externa.
- Valor de retorno: Ninguno (void)
Precauciones
- Después de llamar a
clear()clear(), todos los elementos de la lista enlazada serán eliminados y no se podrán recuperar. - Si la lista enlazada es compartida por múltiples referencias, todas las referencias verán el efecto de que la lista ha sido vaciada.
- Después de vaciar la lista enlazada, se pueden seguir agregando nuevos elementos.
- y
new LinkedList<>()A diferencia de crear una nueva instancia,clear()el método reutiliza el objeto existente.
Comparación con otros métodos
| Método | Función | Complejidad temporal | ¿Modifica la lista original? |
|---|---|---|---|
| clear() | Eliminar todos los elementos | O(n) | Sí |
| removeAll() | Eliminar todos los elementos de la colección especificada | O(n*m) | Sí |
| new LinkedList<>() | Crear una nueva lista enlazada vacía | O(1) | no |
Escenarios de aplicación práctica
clear()El método es especialmente útil en los siguientes escenarios:
- Reutilizar el objeto de lista enlazada: cuando se necesita reutilizar el mismo objeto de lista enlazada
- Gestión de memoria: cuando se necesita liberar la memoria ocupada por la lista enlazada
- Restablecer el estado: cuando se necesita restablecer el estado de la lista enlazada durante algoritmos o procesamiento de datos
Ejemplo
// Ejemplo de aplicación práctica: procesamiento de datos por lotes
LinkedList<Data> dataBuffer = new LinkedList<>();
// Primera fase: recopilar datos
collectData(dataBuffer);
// Procesar datos
processData(dataBuffer);
// Vaciar el búfer para preparar el siguiente lote de datos
dataBuffer.clear();
// Segunda fase: recopilar nuevos datos
collectData(dataBuffer);
LinkedList<Data> dataBuffer = new LinkedList<>();
// Primera fase: recopilar datos
collectData(dataBuffer);
// Procesar datos
processData(dataBuffer);
// Vaciar el búfer para preparar el siguiente lote de datos
dataBuffer.clear();
// Segunda fase: recopilar nuevos datos
collectData(dataBuffer);
Con el uso razonableclear()del método, se puede mejorar la eficiencia y la legibilidad del código.
Java LinkedList