Amigos tenho uma lista com 10 códigos,
nesta lista tenho 5 códigos com o mesmo valor e os outros 5 códigos com outro valor diferente do anterior,
como eu faço para pegar apenas os códigos diferente da minha lista total ?
abaixo esta como estou fazendo essa iteração da minha lista com todos os elementos
sei que preciso de apenas um if dentro do meu while, mas não sei como eu verifico o código que tenho da lista com o próximo que vai vir assim até o ultimo,
depois sei que irei adicionar dentro de uma outra lista apenas os códigos diferente
if (listaElementos.size() > 1) {
Iterator itr = listaElementos.iterator();
while (itr.hasNext()) {
String elementos = itr.next().toString();
System.out.println("Elementos da minha Lista: " + elementos);
}
}
Cara tem diversas formas… Tudo depende como você esta guardando esse codigo, vejo que é uma string então tente com equals. Eu não vou julgar os motivos para organizar os dados de tais formas… mas o metodo equals() ajuda seu problema
String str1 = new String("This is really not immutable!!");
String str2 = new String("This is really not immutable!!");
if(str1.equals( str2 )){
}
//Remove os espaços
str1.trim();
Amigo,
sei que posso usar o equals para comparar duas String, mas a questão e que tenho a seguinte linha String elementos = itr.next().toString();,
minha String elementos recebe os valores da lista conforme vai sendo feito a iteração, não tenho uma String 2 recebendo os valores para eu comparar com o .equals
Crie uma outra variável para armazenar o valor anterior 
Esses 5 codigo do mesmo valor são padrão? como que funciona essa regra de virem sempre 5 iguais e 5 diferentes?
Tem mesmo que usar Iterator?
A coleção em questão é realmente uma List?
Pode dar um exemplo de como fica no trecho de código que postei ?
Sem preguiça, cara. Tenta aí
Nos fale aonde empacou, se tiver problemas
mr.michels não e padrão isso pode variar, a questão de eu ter 5 registro com um valor e 5 com outro e um exemplo, pode ser qq quantidade,
drsmachado,
não precisa ser um Iterator estou usando ele pq foi a solução que pensei, eu tenho os valores em uma lista mesmo.
[quote=thiagoRibeiro]mr.michels não e padrão isso pode variar, a questão de eu ter 5 registro com um valor e 5 com outro e um exemplo, pode ser qq quantidade,
drsmachado,
não precisa ser um Iterator estou usando ele pq foi a solução que pensei, eu tenho os valores em uma lista mesmo.
[/quote]
A sugestão do drsmachado também é interessante, se eu entendi corretamente.
Você pode trabalhar com os índices da lista, pra saber qual o anterior. Mas caso escolha essa abordagem, lembre-se que tem que verificar se o índice é válido.
Se não precisa do iterator é é realmente uma lista, basta que você não use iterator, desta forma e com um for completo, você consegue andar posição a posição da lista e, ainda assim, acessar qualquer posição antes (se existir) e depois (se existir)…
"como eu faço para pegar apenas os códigos diferente da minha lista total ? "
Cara como assim ‘os codigos diferente da lista’? como você sabe qual é o diferente? Existe uma regra? Explique melhor
Cara,
"como eu faço para pegar apenas os códigos diferente da minha lista total ? " minha lista total pode ter 5, 10 20 registros,
pode acontecer que dessa lista com 5, 10 ou 20 registros há 1 ou mais registros com o mesmo código,
com isso por exemplo ser minha lista ter 10 registros eu posso ter 4 códigos diferente
exemplo
3 registros com 1 mesmo código
3 registros com 1 mesmo código
4 registros com 1 mesmo código
a soma desses registros e igual a 10
tendeu ?
Entendi. E qual deles são os codigos diferentes?minhas perguntas são para vc expressar melhor o problema.
Mas acho q entendi.
Você quer verificar nos registros os codigos que ainda não foram armazenados? ou seja vc tem uma base com esses codigos armazenados?
Use um HashSet e adicione todos os códigos da sua lista. No final, você terá uma coleção com códigos únicos, já que o HashSet não insere elementos repetidos.
Eu quero verificar na lista de registros que já veio do banco de dados os códigos diferentes conforme o exemplo
3 registros com 1 mesmo código código 4834 por exemplo
3 registros com 1 mesmo código [/b]código 2123 por exemplo
4 registros com 1 mesmo código código 2312 por exemplo [b]
ou seja na lista com os 10 registros vou ter 4 registro com o código 2312
ou seja na lista com os 10 registros vou ter 3 registro com o código 2123
ou seja na lista com os 10 registros vou ter 3 registro com o código 4834
ai vou jogar esses 3 códigos dentro de uma outra lista
Ficou claro agora ?
Já estava claro… como eu disse, é só usar um HashSet para criar a outra lista…
Você chegou a criar uma lógica para isto? Algoritmo mesmo? Fez algum teste de mesa? Tem alguma idéia de como pretende fazer isso?
Basicamente você não conseguirá fazer com apenas um for. Precisa elaborar mais teu raciocínio.
Pode me mostrar como fica ?
estou fazendo algumas tentativas com o Iterator mas não deu certo ainda
Boa tarde!
Faz o teste de mesa como o drsmachado citou anteriormente, pega seu primeiro código num for each, compara sua lista que vem do banco, com um objeto que contem seus números e vai vendo se na próxima iteração se o código já existir no objeto vc não insere ele, fiz isso esses dias com um cadastro de atividades de um setor onde no momento da criação da atividade era necessário verificar se a mesma já existia no banco, caso já tivesse sido criada, dentro do for each era lançada uma ModelException avisando o usuário que a atividade já havia sido criada.
Essa é uma situação que ocorreu comigo e a solução foi basicamente o teste de mesa, se servir para o seu caso blz.
Att.