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?
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