Beh... la prima riga crea un ArrayList completamente vuoto... nelle righe successive non lo tocchi (ovvero, non ci aggiungi nulla) e poche righe più sotto (dentro il corpo del if) vai a cercare di recuperarne l'i-esimo elemento... che ovviamente non esiste.


codice:
vicini.get(i)

Da qui l'errore: stai cercando di prendere l'oggetto in posizione 0 da un ArrayList vuoto (che, quindi, non contiene elementi).


Ciao.