[RESOLVIDO] Inverter um ArrayList em Java sem a utilização do Collections.reverse

Preciso de uma ajuda, criei esse código porém ele está dando erro, preciso de ajuda para poder Inverter um ArrayList sem a utilização do Collections.reverse(lista).

Exception in thread “main” java.lang.IndexOutOfBoundsException: Index: 4, Size: 3 (esse é o erro)


package trabalhocomarraylist;

import java.util.ArrayList;

public class TrabalhoComArraylist {
    public static void main(String[] args) {
        
        ArrayList<String> nomes = new ArrayList<>();

        nomes.add("Gustavo");
        nomes.add("Henrique");
        nomes.add("Scarpim");
        
        ArrayList<String> newNomes = nomes;
        ArrayList<String> result = new ArrayList<>();
        System.out.println(newNomes);
        
        inverter(nomes);
        
    }
        public static void inverter(ArrayList arr){
            
        ArrayList<String> result = new ArrayList<>();
            for(int i = arr.size() + 1; i >= 0; i--){
              result.add((String) arr.get(i));
            }
        }
    
}

Bom dia!

O seu array tem tamanho 3 e vai de 0 a 2, mas você esta falando para o i começar em 4 (arr.size() + 1), a forma correta seria: arr.size() - 1

Essa exceção é lançada sempre que você tenta acessar um índice inexistente, no caso você tenta acessar o índice 4 e você só tem 3 posições

3 curtidas

Muito obrigado :smiley: , era só um sinal de menos kkkk e obrigado pela explicação sobre o erro index me ajudou muito.
Grato!!