Programa de sorteio por nomes

Salve rapaziada,

Estou fazendo um programinha que faz sorteio por nomes. Eis o código:

[code]package br.com.teste;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Sorteio {

public String sorteia (){

	List<String> lista = new ArrayList<String>() ;
	lista.add ("Maria") ; 
	lista.add ("Pedro") ;
	lista.add ("João") ;
	lista.add ("Francisco") ;
	lista.add ("Luiza") ;
	lista.add ("Maristela") ;
	lista.add ("Anderson") ;
	lista.add ("Helena") ;
	lista.add ("Patricia") ;
	lista.add ("Daniele") ;

	Collections.shuffle(lista) ;

	// pega qualquer indice.
	return lista.get((int)Math.random() * lista.size());
}

public static void main(String []args){
	Sorteio sorteio = new Sorteio();
	for(int i = 0; i<3; i++){
		System.out.println(sorteio.sorteia());
	}
}

}
[/code]

Só que estou sem saber como faço para imprimir uma lista de 3 pessoas sem repetição a cada vez que eu for executar o código. Por exemplo:

Pedro
Luiza
Maria

E assim vai, se alguém puder me ajudar com uma dica agradeço.

Valew

Coloque os nomes sorteados num Set até dar 3 elementos.

Tipo o List<String> lista = new ArrayList<String>() ;
vira Set<String> lista = new HashSet<String>();

depois como faço para embraralhar novamente com o Set o Collections.shuffle embaralhava. E o get eu pegava o sorteado. Com o Set como ficaria ?

List<String> lista = new ArrayList<String>(); lista.add("Maria"); lista.add("Pedro"); lista.add("João"); lista.add("Francisco"); lista.add("Luiza"); lista.add("Maristela"); lista.add("Anderson"); lista.add("Helena"); lista.add("Patricia"); lista.add("Daniele"); Collections.shuffle(lista); for (int i = 0; i < 3; i++) { int escolha = (int) Math.random() * lista.size(); System.out.println(lista.get(escolha)); lista.remove(escolha); }

Valeu pela força, ficou assim o código.

[code]package br.com.teste;

import java.util.ArrayList;
import java.util.Collections;
import java.util.*;

public class Sorteio {

public static String sorteia (){

	List<String> lista = new ArrayList<String>();
	lista.add ("Maria") ; 
	lista.add ("Pedro") ;
	lista.add ("João") ;
	lista.add ("Francisco") ;
	lista.add ("Luiza") ;
	lista.add ("Maristela") ;
	lista.add ("Anderson") ;
	lista.add ("Helena") ;
	lista.add ("Patricia") ;
	lista.add ("Daniele") ;

	Collections.shuffle(lista) ;

	// pega qualquer indice.
	return lista.get((int)Math.random() * lista.size());
}

public static void main(String []args){

	Set sorteados = new HashSet();
	String aux = "";
	for(int i = 0; i<3; i++){
		boolean novo = false;
		while (!novo) {
			aux = sorteia();
			if (!sorteados.contains(aux)) {
				System.out.println(aux);
				novo = true;
				sorteados.add(aux);
			}


		}
	}
}

}

[/code]

[]'s

Se já fazes o shuffle, para que o Random?
Fazendo o shuffle e pegando os três primeiros da lista, tens sempre três nomes diferentes.

[quote=pmlm]Se já fazes o shuffle, para que o Random?
Fazendo o shuffle e pegando os três primeiros da lista, tens sempre três nomes diferentes.

[/quote]

Poxa vida, ia falar exatamente isso eheheh.

o shuffle já vai randomizar sua lista, basta pegar as 3 primeiras posições.