ArrayList sobrescrevendo dados

 public static void main(String[] args) {
    String nome;
    int aux = 0;
    ArrayList<Contato> contatos = new ArrayList();
    Contato c = new Contato();

    do {       
        Scanner in = new Scanner(System.in);
        System.out.println("Cadastrar 1");
        System.out.println("Sair 2");
        aux = in.nextInt();
        switch (aux) {
            case 1:
                Scanner in2 = new Scanner(System.in);
                System.out.println("Digite um nome: ");
                nome = in2.nextLine();
                c.setNome(nome);
                contatos.add(c);        
                break;
            case 2://sair
                
                break;
            default:
                System.out.println("invalido!");
                break;
        }

    } while (aux != 2);


    int i;
   
    int n = contatos.size();
    for (i = 0; i < n; i++) {
        System.out.printf("Posição %d- %s\n", i, contatos.get(i));
    }
}

Apenas postar o código não ajuda. Contextualize.

Desculpe sou novato por aqui, meu problema é na hora de ler os dados salvados no arraylist, ele repete a ultima informação salva em todas as posições

Você só está criando um contato e a cada iteração do laço você está alterando os dados dele e adicionando novamente na lista.

O certo é criar um novo contato a cada iteração e não alterar os dados do mesmo.

1 curtida

Muito obrigado!