Olá, Nayara!
A exceção IndexOutOfBoundsException
ocorre quando você tenta acessar um índice além do tamanho de uma lista ou array.
Observe que o seu for
recebe o tamanho de horarios
como condição de parada, e você tenta acessar o índice i
de horariosAux
, que tem um tamanho menor do que horarios
, logo, você acabará excedendo o tamanho de horariosAux
e acessando uma posição que não existe, ocasionando essa exceção.
Podemos contornar essa situação utilizando o método contains()
, que simplesmente verifica se um item está presente em um array. Com isso, não precisamos nos preocupar com o tamanho de horariosAux
, mas sim em checar, uma a uma, se todas as strings contidas em horarios
estão também em horariosAux
.
O código ficaria assim:
List<String> horarios = new ArrayList<>();
horarios.add("00:00");
horarios.add("00:15");
horarios.add("00:30");
horarios.add("00:45");
horarios.add("01:00");
horarios.add("01:15");
horarios.add("01:30");
List<String> horariosAux = new ArrayList<>();
horarios.add("00:00");
horarios.add("01:00");
horarios.add("01:30");
for (int i = 0; i < horarios.size(); i++) {
if (!horariosAux.contains(horarios.get(i))) {
horariosAux.add(i, horarios.get(i));
}
}
Espero ter ajudado!
Caso necessite de qualquer alteração, é só avisar!
No mais, boa sorte em seus estudos!