[resolvido] 'operacao' com arraylist

5 respostas
d34d_d3v1l

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

5 Respostas

otaviojava

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

prog.tiago

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:

Set<String> conjuntoNaoDuplicado = new HashSet<String>();

conjuntoNaoDuplicado.add("tiago");
conjuntoNaoDuplicado.add("flavio");
conjuntoNaoDuplicado.add("tiago");

System.out.println("conjuntoNaoDuplicado);

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

Abraços

renamed

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.

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();
		
			// 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);
		}

	}

ok? :wink:

drigo.angelo

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

d34d_d3v1l

Obrigado gente!

:slight_smile:

Criado 10 de março de 2011
Ultima resposta 10 de mar. de 2011
Respostas 5
Participantes 5