eliminarEnEste método recibe un índice y elimina el elemento correspondiente del arreglo.
eliminarEnPrimero debemos validar el índice y luego mover los elementos restantes a la izquierda para llenar el hueco.
Si alguien pasa un índice inválido, como -1 o 5, eso no tiene sentido.
El último índice válido es contador - 1.
Por eso, si el índice está fuera de rango, lanzamos una excepción para detener el programa.
Supongamos que el arreglo contiene los valores:
Queremos eliminar el elemento con índice 1, es decir, el 20. Marcamos el elemento que desaparecerá:
Después de eliminar, los elementos de la derecha se mueven una posición hacia la izquierda.
Así se “rellena” el hueco.
El resultado final es este:
El arreglo sigue ordenado, sin huecos, y preparado para nuevas inserciones ✅
Arreglo inicial y objetivo:
Iteración i = 1 items[1] = items[2] → [10, 30, 30, 40]
Iteración i = 2 items[2] = items[3] → [10, 30, 40, 40]
Fin del bucle → contador-- → [10, 30, 40, ⬜]
El bucle va hasta el penúltimo (contador - 1) para no salirse con i + 1.
public class Main {
public static void main(String[] args) {
Arreglo numeros = new Arreglo(3);
numeros.insertar(10);
numeros.insertar(20);
numeros.insertar(30);
numeros.insertar(50);
System.out.println("antes");
numeros.imprimir();
numeros.eliminarEn(1);
System.out.println("después");
numeros.imprimir();
}
}public class Arreglo {
private int[] items;
// Nuevo campo: número de elementos realmente insertados
private int contador;
public Arreglo(int longitud){
items = new int[longitud];
contador = 0; // al inicio, el arreglo está vacío
}
public void insertar(int item) {
if (items.length == contador) {
int[] newItems = new int[contador * 2];
for (int i = 0; i < contador; i++)
newItems[i] = items[i];
items = newItems;
}
items[contador++] = item;
}
public void eliminarEn(int index) {
if (index < 0 || index >= contador)
throw new IllegalArgumentException();
for (int i = index; i < contador; i++)
items[i] = items[i + 1];
contador--;
}
public void imprimir() {
for (int i = 0; i < contador; i++)
System.out.println(items[i]);
}
}