Minha dúvida é o seguinte, por exemplo como imprimir apenas o elemento repetido e apenas um vez, no exemplo acima só seria impresso o numero 1, que repete 3 vezes, e seria apenas impresso 1 vez, informando que o unico que repetiu foi o 1. No código que postei acima faz o contrário que quero, ele verifica os repetido e exclui, deixando somente números sem respetição…alguém poderia me ajudar ???
Você pode criar um HashSet chamado ‘numerosImpressos’, quando você iterar sobre a lista você verifica se o número foi inserido no HashSet. Se não foi inserido você imprime e adiciona no HashSet, caso contrário, você continua o loop.
fredbene
Você também pode criar um HashMap (HashMap<String, Integer>) onde a chave é o número impresso, e o valor é o contador de números repetidos. Ai para cada número que adicionar atualiza o seu contador.
felipehts
poderia por favor me passar mais detalhes como exemplo, ou indicar um local onde posso entender melhor a questão citada ??? agradeço a todos !!!
fredbene
Fiz um exemplo para você ter idéia do uso do hash para utilizar o contador. Agora é só você aplicar a sua lógica…
publicclassTeste{publicstaticvoidmain(String[]args){Collection<Integer>lista=newArrayList<Integer>();lista.add(1);lista.add(2);lista.add(4);lista.add(5);lista.add(1);lista.add(1);Map<Integer,Integer>map=newHashMap<Integer,Integer>();for(Integerl:lista){intcount=map.get(l)!=null?map.get(l):0;map.put(l,++count);}for(Integern:map.keySet()){System.out.printf("O número %d repetiu %d vez(es)\n",n,map.get(n));}}}
felipehts
valeu, obrigado, vou testar aqui… mas ajudou 100%…vlw
felipehts
Bom amigo, verifiquei aqui bastante interessante, porém esse método não exclui os números repetidos da lista, deixando apenas os repetidos, que eu quero é exluir o que não são repetidos, e deixar os que são repetidos porém uma única vez, ex: tem 2,3,4,4,4 … no conjunto seria somente 4…entendeu ??? obrigado mais uma vez !
ViniGodoy
Copie todos os números da lista num set.
Remova da lista todos os números do set;
Copie toda a lista para outro set.
O set final tem o que você quer.
E, por favor, quando for postar tópicos, não use palavras como “URGENTE”, “IMPORTANTE”, “PLEASE” no título.
O fórum não é local de urgências, e isso mostra que você quer mais destaques do que os demais usuários, o que é considerado falta de etiqueta.
felipehts
Realmente é urgente, mas tudo bem já entendi…
Em relação a dica que você me passou, poderia me passar um exemplo de como usar esse set, não estou entendo como fazer o set que você me falou… obrigado mais uma vez.
rcipriani
felipehts:
Realmente é urgente, mas tudo bem já entendi......
Em relação a dica que você me passou, poderia me passar um exemplo de como usar esse set, não estou entendo como fazer o set que você me falou... obrigado mais uma vez.
Pelo que ele falou parece ser assim, mas me perdi na lógica então, porque retorna 2,1,5,4:
Realmente é urgente, mas tudo bem já entendi......
Em relação a dica que você me passou, poderia me passar um exemplo de como usar esse set, não estou entendo como fazer o set que você me falou... obrigado mais uma vez.
Pelo que ele falou parece ser assim, mas me perdi na lógica então, porque retorna 2,1,5,4:
Neste exemplo acima do conjunto dos números: "1,2,4,5,1,1" eu gostaria que retornasse apenas o número 1, já que é o unico que repeti, porém mesmo respetindo varias vezes, quero que retorne apenas uma vez o número repetido ..ou seja retorna somente uma vez o "1"..E PRONTO...mas nada...vlw ai
OBS:meu trabalho é sobre conjuntos, então gostaria de pegar apenas a intercessão dos conjuntos, ou seja apenas o que tem em comum...entendi...vlw
ViniGodoy
Quase. Eu quis dizer isso aqui:
importjava.util.ArrayList;importjava.util.HashSet;importjava.util.Set;importjava.util.TreeSet;publicclassTeste{publicstaticvoidmain(String[]args){ArrayList<String>lista=newArrayList<String>();lista.add("1");lista.add("2");lista.add("4");lista.add("5");lista.add("1");lista.add("1");//Copiar a lista para um set. Isso dará todos os elementos, //sem duplicaçãoSet<String>set=newHashSet<String>(lista);//Eliminar a primeira ocorrência daquele elemento da lista//Com isso, só as duplicações sobrarão. for(Stringelement:set)lista.remove(element);//Copiar o resultado para um set.//Isso garante que elementos que apareciam mais de 2 vezes agora só apareçam uma única vez.Set<String>set2=newTreeSet<String>(lista);for(Stringelement:set2){System.out.println(element);}}}
O método removeAll não pode ser usado nesse caso, pois ele remove todas as ocorrências de uma String na lista, não só a primeira.
ViniGodoy
felipehts:
Neste exemplo acima do conjunto dos números: “1,2,4,5,1,1” eu gostaria que retornasse apenas o número 1, já que é o unico que repeti, porém mesmo respetindo varias vezes, quero que retorne apenas uma vez o número repetido …ou seja retorna somente uma vez o “1”…E PRONTO…mas nada…vlw ai
OBS:meu trabalho é sobre conjuntos, então gostaria de pegar apenas a intercessão dos conjuntos, ou seja apenas o que tem em comum…entendi…vlw
Só faz sentido falar em interseção, se você tiver dois conjuntos. Como você falou, precisa ter “algo em comum”.
Nesse caso, você tem apenas um único conjunto, então, não existe interseção nenhuma.
A classe Set representa justamente um conjunto, onde seus elementos internos não se repetem.
ViniGodoy
Só um último parênteses.
Todas as collections tem um método para interseção de conjuntos.
Obviamente, como eu falei, só tem sentido falar em interseção se você tem dois conjuntos.
Obrigado pela aula ! Realmente era isso quer precisava, porém testei aqui, e a impressão foi essa:
"run:
[]
[]
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)"
ficou vazio a impressão, sabe me dizer o porque ?? vlw obrigado.
ViniGodoy
Falha de copy&paste. Note ali em cima que na hora de colocar itens no conjunto 2, coloquei no conjunto 1. LOL
Já corrigi no meu post.
felipehts
ViniGodoy:
Falha de copy&paste. Note ali em cima que na hora de colocar itens no conjunto 2, coloquei no conjunto 1. LOL
Já corrigi no meu post.
Era isso mesmo que precisava, agora vou implementar aqui a lógica no meu trabalho… vlw mesmo …obrigado mais um vez…