packagepoo2.colecoes;importjava.util.ArrayList;importjava.util.Collection;importjava.util.HashSet;importjava.util.Iterator;importjava.util.Scanner;importjava.util.jar.Attributes;publicclassExemplo4{privatestaticAttributesnomes=newAttributes();publicstaticvoidmain(String[]args){intopcao;Scannerinput;do{// mostra um menuSystem.out.println("=== escolha uma opção === ");System.out.println("1 - adicionar nome");System.out.println("2 - remover nome");System.out.println("3 - visualizar ArrayList");System.out.println("4 - sair");System.out.println("informe uma opção >-> ");input=newScanner(System.in);opcao=input.nextInt();switch(opcao){case(1):{System.out.print("Digite o nome que será adicionado: ");ScannerinputValue=newScanner(System.in);Stringnome=inputValue.next();adicionar(nome);break;}case(2):{System.out.print("Informe o nome que será removido ");ScannerinputRemovedValue=newScanner(System.in);StringnomeRemovido=inputRemovedValue.next();remover(nomeRemovido);break;}case(3):{visualizar();break;}case(4):{System.out.println("finalizando programa... ");break;}default:{System.out.println("opção inválida!!!");break;}}}while(opcao!=7);}privatestaticvoidadicionar(Stringn){// passo 1 - adiciona o objeto String dentro do arraynomes.putValue(n,n);System.out.println("'"+n+"' adicionado com sucesso!\n");}privatestaticbooleanremover(StringobjetoRemover){// paso 2 - removernomes.remove(objetoRemover);returntrue;}publicstaticvoidvisualizar(){System.out.println("\n...........\nArrayList nomes.\ntamanho: "+nomes.size());Collectioncollection=nomes.values();while(collection.iterator().hasNext()){System.out.println(collection.iterator().next());}System.out.println("\ndigite qualquer tecla para continuar...\n");IO.readStr();// apenas para dar uma pausa}}
O código acima descreve uma estrutura de armazenamento de dados, que aparentemente deveria funcionar, mas ao visualizar o registro o programa entra em um ciclo de repetição que nao acaa mais.
Você está toda hora pegando o iterator da lista e vendo se existe próximo(Primeiro registro).
Novamente pega de novo o iterator da lista e ve se existe o proximo(Primeiro Registro.)…
e vai vai vai…
Vc tem q fazer:
Você está toda hora pegando o iterator da lista e vendo se existe próximo(Primeiro registro).
Novamente pega de novo o iterator da lista e ve se existe o proximo(Primeiro Registro.)…
e vai vai vai…
Vc tem q fazer:
public static void visualizar(){
System.out.println("\n...........\nArrayList nomes.\ntamanho: " + nomes.size());
Collection collection = nomes.values();
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
System.out.println(collection.iterator().next());
}
System.out.println("\ndigite qualquer tecla para continuar...\n");
IO.readStr(); // apenas para dar uma pausa
}
Mas não resolveu, acontece sempre a mesma coisa.
gp7junior
Yes, perfeitamente meu bom homem.
renanpto
gp7junior:
fabiozoroastro:
Olha onde vc está pecando feio:
while(collection.iterator().hasNext())...
Você está toda hora pegando o iterator da lista e vendo se existe próximo(Primeiro registro).
Novamente pega de novo o iterator da lista e ve se existe o proximo(Primeiro Registro.)..
e vai vai vai..
Vc tem q fazer:
publicstaticvoidvisualizar(){System.out.println("\n...........\nArrayList nomes.\ntamanho: "+nomes.size());Collectioncollection=nomes.values();Iteratoriterator=collection.iterator();while(iterator.hasNext()){// pode tirar "collection.iterator()", desnecessario// System.out.println(collection.iterator().next());// so que assim ele retorna um Object, nao sei vai imprimir o conteudo correto..System.out.println(iterator.next());}System.out.println("\ndigite qualquer tecla para continuar...\n");IO.readStr();// apenas para dar uma pausa}
Mas não resolveu, acontece sempre a mesma coisa.
:D
Testa ai.....
gp7junior
Mas não resolveu, acontece sempre a mesma coisa.
Testa ai…
public static void visualizar(){
System.out.println("\n...........\nArrayList nomes.\ntamanho: " + nomes.size());
Collection collection = nomes.values();
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
System.out.println("\ndigite qualquer tecla para continuar...\n");
IO.readStr(); // apenas para dar uma pausa
}
agora sim funcionou.
fabiozoroastro
Mas vc ainda está dando o next no iterator do collection toda hora.
É verdade. Desculpe não tinha prestado atenção nesse detalhe.
Valeu muito obrigado
gp7junior
Aproveitando o tópico, gostaria de uma ajuda também em outro problema referente a esse mesmo progrma.
As saidas System.ou.println() não estão se comportando de forma devida.
Ao digitar a opção 1, inserir registro, antes eh necessario vc digitar o elemento a ser inserido, pra depois vc ver a mensagem: "Insira um nome:".
Quando era pra estar ocorrendo o inverso.
packagepoo2.colecoes;importjava.util.ArrayList;importjava.util.Collection;importjava.util.HashSet;importjava.util.Iterator;importjava.util.Scanner;importjava.util.jar.Attributes;publicclassExemplo4{privatestaticAttributesnomes=newAttributes();/** <String> acima especifica ao HashSet que ele trabalhará * com objetos do tipo String. O seu uso não é obrigatório, logo, * o trecho acima poderia ser declarado da seguinte forma: * private static HashSet nomes = new HashSet(); */publicstaticvoidmain(String[]args){intopcao;Scannerinput;do{// mostra um menuSystem.out.println("=== escolha uma opção === ");System.out.println("1 - adicionar nome");System.out.println("2 - remover nome");System.out.println("3 - visualizar ArrayList");System.out.println("4 - sair");System.out.println("informe uma opção >-> ");input=newScanner(System.in);opcao=input.nextInt();switch(opcao){case(1):{System.out.print("Digite o nome que será adicionado: ");ScannerinputValue=newScanner(System.in);Stringnome=inputValue.next();adicionar(nome);break;}case(2):{System.out.print("Informe o nome que será removido ");ScannerinputRemovedValue=newScanner(System.in);StringnomeRemovido=inputRemovedValue.next();remover(nomeRemovido);break;}case(3):{visualizar();break;}case(4):{System.out.println("finalizando programa... ");break;}default:{System.out.println("opção inválida!!!");break;}}}while(opcao!=7);}privatestaticvoidadicionar(Stringn){// passo 1 - adiciona o objeto String dentro do arraynomes.putValue(n,n);System.out.println("'"+n+"' adicionado com sucesso!\n");}privatestaticbooleanremover(StringobjetoRemover){// paso 2 - removernomes.remove(objetoRemover);returntrue;}publicstaticvoidvisualizar(){System.out.println("\n...........\nArrayList nomes.\ntamanho: "+nomes.size());Collectioncollection=nomes.values();Iteratoriterator=collection.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}System.out.println("\ndigite qualquer tecla para continuar...\n");IO.readStr();// apenas para dar uma pausa}}