"non funziona" non vuole dire nulla: non compila? eccezione a runtime? Riporta tutto...
Ad ogni modo, ArrayList salva i dati un un normale array. Se cancelli l'elemento in posizione i, quello in posizione i+1 prenderà il suo posto e l'array diventa più corto. Mi segui?