Método Java Vector clear()

Java Vector Java Vector

clear()El método esVectorUn método común proporcionado por la clase, utilizado para eliminar todos los elementos de la colección.

public void clear()

Funcionalidad del método

clear()La función principal del método es vaciarVectortodos los elementos, convirtiéndolo en una colección vacía. Después de llamar a este método,Vectordesize()devolverá 0, perocapacity()permanece sin cambios.

Características clave

  • EliminaVectortodos los elementos de
  • va aVectorEl tamaño (size) se restablece a 0
  • No cambiaVectorla capacidad (capacity) de
  • La complejidad temporal de esta operación es O(n), donde n esVectorel tamaño de

Principio de implementación del método

En el [algo] de JavaVectoren la claseclear()La implementación del método en realidad se realiza llamando aremoveAllElements()método para completarse:

Ejemplo

public void clear() {
    removeAllElements();
}

removeAllElements()La implementación interna del método recorreVectortodos los elementos, y establece cada posición anully al mismo tiempo restablece el contador de elementos a 0.

Análisis del código fuente

Ejemplo

public synchronized void removeAllElements() {
    modCount++;
    // Establece todos los elementos a null
    for (int i = 0; i < elementCount; i++)
        elementData[i] = null;
    elementCount = 0;  // Restablece el contador de elementos
}

Ejemplo de uso

Uso básico

Ejemplo

import java.util.Vector;

public class VectorClearExample {
    public static void main(String[] args) {
        // Crear un Vector y agregar elementos
        Vector<String> fruits = new Vector<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
       
        System.out.println("Vector antes de vaciar: " + fruits);
        System.out.println("Tamaño antes de vaciar: " + fruits.size());
       
        // Usar el método clear() para vaciar el Vector
        fruits.clear();
       
        System.out.println("Vector después de vaciar: " + fruits);
        System.out.println("Tamaño después de vaciar: " + fruits.size());
    }
}

Resultado de salida

清空前的 Vector: [Apple, Banana, Orange]
清空前的大小: 3
清空后的 Vector: []
清空后的大小: 0

Relación con removeAllElements()

Ejemplo

Vector<Integer> numbers = new Vector<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);

// clear() y removeAllElements() tienen el mismo efecto
numbers.clear();  // Vaciar Vector
// Equivalente a
// numbers.removeAllElements();

Consideraciones

La capacidad no cambia

clear()El método solo vacíaVectorlos elementos, pero no cambia su capacidad. Si necesita reducir la capacidad al mismo tiempo, puede llamar atrimToSize()método:

Ejemplo

Vector<String> items = new Vector<>(20);  // Capacidad inicial de 20
items.add("A");
items.add("B");
items.add("C");

items.clear();  // Vaciar elementos, la capacidad sigue siendo 20
items.trimToSize();  // Ajustar la capacidad al tamaño actual (0)

Seguridad de hilos

VectorEs seguro para hilos,clear()el método también es sincronizado (synchronized), y puede usarse de manera segura en entornos multiproceso.

Diferencias con ArrayList

AunqueArrayListtambién tieneclear()método, peroVectordeclear()es sincronizado, mientras queArrayListel de [algo] no lo es:

Ejemplo

// El clear() de Vector es sincronizado
public synchronized void clear() {
    removeAllElements();
}

// El clear() de ArrayList no es sincronizado
public void clear() {
    modCount++;
    for (int i = 0; i < size; i++)
        elementData[i] = null;
    size = 0;
}

Preguntas frecuentes

Q1: ¿El método clear() libera memoria?

clear()El método establece todas las referencias de elementos anulllo que permite que estos objetos sean recolectados por el recolector de basura (si no hay otras referencias hacia ellos). Sin embargo,Vectorel arreglo interno en sí no se libera, solo se vacían los elementos en él.

Q2: ¿Cuál es la diferencia entre clear() y new Vector()?

  • clear()Reutiliza el [algo] existenteVectorobjeto, solo vacía los elementos en él
  • new Vector()Crea un [algo] completamente nuevoVectorobjeto, el antiguoVectorsi no hay otras referencias, será recolectado por el recolector de basura

Q3: ¿Cómo saber si el Vector está vacío?

Puede usarisEmpty()método:

Ejemplo

Vector<String> v = new Vector<>();
v.clear();
if (v.isEmpty()) {
    System.out.println("El Vector está vacío");
}

Resumen

Vectordeclear()El método es una herramienta simple pero práctica, utilizada para vaciar rápidamente todos los elementos de una colección. Comprender su principio de funcionamiento y sus características ayuda a escribir código Java más eficiente. Recuerde sus características relacionadas con la capacidad, la seguridad de hilos, y las mejores prácticas en escenarios específicos.

Java Vector Java Vector

Otras extensiones