Não repetir números - ArrayList

Buenas!

Estou tentando gerar números aleatórios (de 1 à 6) dentro de um ArrayList, e no final imprimí-los, mas os números não podem ser repetidos. Se alguém puder dar uma força, agradeço.

Segue o código:

import java.util.ArrayList;
import java.util.Random;

public class Teste {

	public static void main(String[] args) {
		
		ArrayList<Integer> lista = new ArrayList<Integer>();
		Random r = new Random();
		boolean repetir = true;
		
		int numero = r.nextInt(6) + 1;
		
		do{
			for(Integer l : lista){
				if(numero != l){
					numero = r.nextInt(6) + 1;
					lista.add(numero);
					repetir = false;
				}
				else{
					repetir = true;
				}
			}
		}while(repetir = true);

		
		for(Integer l : lista){
			System.out.println(l.toString());
		}
	}
}

Usa um Set. Set não aceita objetos repetidos.

Por que não usa um HashSet ao invés da lista?

Java possui diferentes subinterfaces de Collection justamente para vários tipos de problemas.
A interface List (java.util.List) e suas implementações, todas, aceitam valores repetidos. Ou você faz uma verificação com o método contains, o que demanda desempenho ou usa algum outro que não permita duplicidade.
O mais próximo da estrutura da List é o Set (java.util.Set) e suas implementações (java.util.HashSet e java.util.LinkedHashSet, por exemplo) cuja função é a de representar um conjunto. Em um conjunto não são aceitos elementos duplicados, logo, o Set não permite duplicidades.

Tem um errinho aqui.

        }while(repetir = true);  

Não seria isto aqui?

        }while(repetir == true);  

A propósito, é “bad style” comparar uma variável booleana com false ou true. O correto é usar algo como

        }while(repetir);  

Adicione em ordem os números de 1 até 6 na lista e depois use o método Collections.shuffle para embaralhar a lista.

exemplo abaixo:

import java.util.HashSet;
import java.util.Set;


public class Teste {

	private Set<Integer> lista = new HashSet<Integer>();
	
	public static void main(String[] args) {

		Teste teste = new Teste();
		teste.adicionaNumeroRandomico();
	}
	
	private void adicionaNumeroRandomico() {
	
		while (lista.size() < 6) {
			lista.add(geraNumeroAleatorio());
		}
		
		imprimir();
	}
	
	private void imprimir() {
		
		for (Integer numeroRandomico : lista) {
			System.out.println(numeroRandomico);
		}
		
	}
	
	private int geraNumeroAleatorio() {
		return (int) (Math.random() * 10);
	}
}

agora não posso explicar ta dando a hora de sair do trampo :smiley: qualquer coisa poste sua duvida que quando chegar na facul eu respondo