Método Java Vector clear()
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
- Elimina
Vectortodos los elementos de - va a
VectorEl tamaño (size) se restablece a 0 - No cambia
Vectorla capacidad (capacity) de - La complejidad temporal de esta operación es O(n), donde n es
Vectorel 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
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
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
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
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
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
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 élnew 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
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