[resolvido] 'operacao' com arraylist

tenho uma arraylist de String…

Antes de adicionar um nome por exemplo, que verificar se esse nome ja existe nessa lista…
Se existir, nao adiciono… se não existir, adiciono!

eu pesquisei antes… achei um topico inclusive que o vinny da o código todin de um metodo “Apaga por nome”…
mas na verdade nao consegui adaptar o código…

desculpem qqer coisa!
abraços

Você pode usar a Collection Set.
Ele não duplica os valores de uma lista

http://download.oracle.com/javase/1.4.2/docs/api/java/util/Set.html

Bom dia,

Como o nosso amigo falou, você pode usar a Collection SET, que como os conjuntos matemáticos, não permite valores duplicados.

Assim teríamos como exemplo:

[code]Set conjuntoNaoDuplicado = new HashSet();

conjuntoNaoDuplicado.add(“tiago”);
conjuntoNaoDuplicado.add(“flavio”);
conjuntoNaoDuplicado.add(“tiago”);

System.out.println("conjuntoNaoDuplicado);[/code]

Ao imprimir na tela vc perceberá que só imprimiu 1 “tiago”.

Abraços

Se vc ainda quiser usar ArrayList vc tem duas opções…

:arrow: Usar o método contains da própria interface List. Nesse caso os elementos aparecerão na ordem em que foram inseridos.

public static void main(String[] args) {
		List<String> nomes = new ArrayList<String>();
		Scanner sc = new Scanner(System.in);
		
		
		for(int i = 0; i < 10; i++){
			System.out.print("Digite um nome: ");
			String novoNome = sc.nextLine();
		
			if (!nomes.contains(novoNome)){
				nomes.add(novoNome);
			}			
		}
		
		System.out.println("\nNOMES");
		for(String s : nomes){
			System.out.println(s);
		}

	}

:arrow: Ou, se os dados na sua List não precisam seguir a mesma ordem de inserção, vc pode usar a interface Collections.

[code]
public static void main(String[] args) {
List nomes = new ArrayList();
Scanner sc = new Scanner(System.in);

	for(int i = 0; i < 10; i++){
		System.out.print("Digite um nome: ");
		String novoNome = sc.nextLine();
	
		// A busca binária devolve número negativo caso não encontre o elemento
		if (Collections.binarySearch(nomes, novoNome) < 0){
			nomes.add(novoNome);
			// É necessário ordenar os elementos para que a busca binária funcione
			Collections.sort(nomes);
		}			
	}
	
	System.out.println("\nNOMES");
	for(String s : nomes){
		System.out.println(s);
	}

}[/code]

ok? :wink:

O arrayList tem um método contains(Object o) que deve servir pra você.

vide ArrayList contains(Object o) - Java 6

Update: Nem tinha visto a respota acima xD

Obrigado gente!

:slight_smile: