Método removeRange() de Java Vector
removeRange()El método está en JavaVectorun método protegido proporcionado por la clase, utilizado para eliminar deVectortodos los elementos dentro del rango especificado. Este método se define enjava.util.Vectorla clase, heredado dejava.util.AbstractListclase.
Descripción de la sintaxis
protected void removeRange(int fromIndex, int toIndex)
Descripción de parámetros
| Nombre del parámetro | Tipo | Descripción |
|---|---|---|
| fromIndex | int | Índice del primer elemento a eliminar (incluyendo este elemento) |
| toIndex | int | Índice después del último elemento a eliminar (excluyendo este elemento) |
Características del método
- Eliminación por rango: puede eliminar múltiples elementos de un rango continuo de una sola vez.
- Límites del índice:
fromIndexdebe ser menor o igual quetoIndex- Ambos índices deben estar dentro del rango válido del Vector (0 ≤ fromIndex ≤ toIndex ≤ size())
- Impacto en el rendimiento: después de eliminar elementos, los índices de todos los elementos posteriores se desplazan hacia adelante en consecuencia.
- Método protegido: solo se puede
Vectorllamar directamente en las subclases de, o mediante el mecanismo de reflexión.
Ejemplo de uso
Ejemplo
import java.util.Vector;
public class CustomVector<E> extends Vector<E> {
public void removeElementsInRange(int from, int to) {
// Se puede llamar directamente al método removeRange() de la clase padre.
this.removeRange(from, to);
}
public static void main(String[] args) {
CustomVector<String> vector = new CustomVector<>();
// Añadir elementos
vector.add("A");
vector.add("B");
vector.add("C");
vector.add("D");
vector.add("E");
System.out.println("Vector original: " + vector); // Salida: [A, B, C, D, E]
// Eliminar los elementos del índice 1 al 3 (B y C)
vector.removeElementsInRange(1, 3);
System.out.println("Vector después de la eliminación: " + vector); // Salida: [A, D, E]
}
}
public class CustomVector<E> extends Vector<E> {
public void removeElementsInRange(int from, int to) {
// Se puede llamar directamente al método removeRange() de la clase padre.
this.removeRange(from, to);
}
public static void main(String[] args) {
CustomVector<String> vector = new CustomVector<>();
// Añadir elementos
vector.add("A");
vector.add("B");
vector.add("C");
vector.add("D");
vector.add("E");
System.out.println("Vector original: " + vector); // Salida: [A, B, C, D, E]
// Eliminar los elementos del índice 1 al 3 (B y C)
vector.removeElementsInRange(1, 3);
System.out.println("Vector después de la eliminación: " + vector); // Salida: [A, D, E]
}
}
Consideraciones
- Índice fuera de límites: si el índice especificado está fuera del rango, se lanzará
IndexOutOfBoundsException - Colecciones inmutables: no se puede usar en colecciones inmutables ni en
Collections.unmodifiableList()un Vector envuelto - Modificación concurrente: cuando se usa en un entorno multihilo, se necesitan medidas de sincronización adicionales.
- Alternativa: si no se necesita heredar de Vector, se puede usar
subList(fromIndex, toIndex).clear()
Consideraciones de rendimiento
removeRange()La complejidad temporal del método es O(n), donde:
- n es el tamaño del Vector
- En el peor caso (eliminar el elemento inicial) se deben mover todos los elementos restantes.
Para operaciones frecuentes de inserción y eliminación, considere usarLinkedListpodría ser más eficiente.
Preguntas frecuentes
1. ¿Por qué removeRange() es un método protected?
Esta es una decisión de diseño del framework de colecciones de Java, cuyo objetivo es animar a los desarrolladores a usar la interfaz más genérica.ListSi se necesita exponer esta funcionalidad, se puede envolver en una subclase.
2. ¿Cómo implementar la eliminación de un rango sin heredar de Vector?
Se pueden usar las siguientes alternativas:
Ejemplo
Vector<String> vector = new Vector<>();
// Añadir elementos...
// Usar la combinación de subList y clear
vector.subList(1, 3).clear();
// Añadir elementos...
// Usar la combinación de subList y clear
vector.subList(1, 3).clear();
3. ¿Cuál es la diferencia entre removeRange() y removeAll()?
removeRange()Elimina los elementos dentro del rango de índices especificado.removeAll()Elimina todos los elementos que coinciden con la colección especificada.
Java Vector