Preenchi um ArrayList com diversos valores numéricos em Double.
Preciso retirar os valores para fazer contas com eles. O problema é que os métodos ArrayList.get(int indice) ou Iterator.next() retornam valores Object do ArrayList, e estou tendo problemas em convertelos para Double.
Manda o seu código, esse print que vc deu não pega a incialização do seu ArrayList.
Você colocou um ArrayList<Double> ou não?
B
BrunoCampera
ArrayListlist=newArrayList();//preenchendo um vetor comumint[]vetor=newint[10];for(inti=0;i<10;i++){vetor[i]=i+1;//System.out.println("vetor["+i+"]="+ vetor[i]);}//transferindo os dadosfor(inti=0;i<10;i++){list.add(vetor[i]);}
Por mérito de testes com arrays comuns, primeiro criei um vetor, preenchi ele. Depois com os dados, passei tudo pro arraylist.
Não tinha feito isso com não, isso diz pro arraylist que ele armazenará doubles?
fabiolp
Exato ele cria um ArrayList que só irá armazenar double, ai vc não precisa ficar fazendo casting para double.
Você comentou de Double e double, saca a diferença?
fabiolp
Se vc quiser fazer esse mesmo código ficaria assim:
List<Double> valores = new ArrayList<Double>();for(inti=0;i<10;i++){valores.add(i);}
packagearraylist;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;publicclassMain{publicstaticvoidmain(String[]args){ArrayList<double>list=newArrayList<double>();//preenchendo um vetor comumint[]vetor=newint[10];for(inti=0;i<10;i++){vetor[i]=i+1;//System.out.println("vetor["+i+"]="+ vetor[i]);}//preenchendo o arraylist chamado listSystem.out.println("O tamanho do arraylist antes de botar dados eh "+list.size());for(inti=0;i<10;i++){list.add(vetor[i]);}System.out.println("O tamanho do arraylist depois de botar dados eh "+list.size());//imprimindo o ultimoSystem.out.println("O ultimo item eh: "+list.get(list.size()-1));//imprimindo todosIteratori=list.iterator();intcont=0;while(i.hasNext()){System.out.println("lista["+cont+"]="+i.next());cont++;}System.out.println("");//imprimindo o quartoSystem.out.println("quarto item: lista[3]="+list.get(3));System.out.println("Localizando numero 5");//localizando um especificofor(intcontador=0;contador<list.size();contador++){doublerecebe=Double.parseDouble((String)list.get(contador));System.out.println("recebe:"+recebe);if(recebe==5){System.out.println("Achamos, capitão! o 5 está aqui");}else{System.out.println("Não achamos");}}}}
fabiolp
Segue o código corrigido.
No ArrayList para você especificicar um tipo esse tipo não pode ser primitivo, então precisaria de um ArrayList<Double>
importjava.util.ArrayList;importjava.util.Iterator;publicclassMain{publicstaticvoidmain(String[]args){List<Double>list=newArrayList<Double>();// preenchendo um vetor comumint[]vetor=newint[10];for(inti=0;i<10;i++){vetor[i]=i+1;// System.out.println("vetor["+i+"]="+ vetor[i]);}// preenchendo o arraylist chamado listSystem.out.println("O tamanho do arraylist antes de botar dados eh "+list.size());for(inti=0;i<10;i++){list.add((double)vetor[i]);}System.out.println("O tamanho do arraylist depois de botar dados eh "+list.size());// imprimindo o ultimoSystem.out.println("O ultimo item eh: "+list.get(list.size()-1));// imprimindo todosIteratori=list.iterator();intcont=0;while(i.hasNext()){System.out.println("lista["+cont+"]="+i.next());cont++;}System.out.println("");// imprimindo o quartoSystem.out.println("quarto item: lista[3]="+list.get(3));System.out.println("Localizando numero 5");// localizando um especificofor(intcontador=0;contador<list.size();contador++){doublerecebe=list.get(contador);System.out.println("recebe:"+recebe);if(recebe==5){System.out.println("Achamos, capitão! o 5 está aqui");}else{System.out.println("Não achamos");}}}}
Ainda dá para melhorar muito esse código.
Mas a princípio é isso.
PS: Só uma dica, quando você for criar um tópico evite colocar imagem representando seu código, cole ele aqui.
Quando ele estiver dando pau, copie e cole o erro do console.
B
BrunoCampera
Obrigado mesmo pela ajuda, cara!
List<Double>list=newArrayList<Double>();
Qual a diferença entre criar ele como um List e um ArrayList?
fabiolp
Na verdade você criou um objeto de ArrayList<Double>.
Só que é boa prática vc usar um refência do tipo List que é a interface que ArrayList implmenta.
Estamos ganhando o polimorfismo nesse caso.
Polimorfismo é a capacidade de a gente referenciar um objeto de diferentes formas.
Nada impede de vc usar ArrayList<Double> na referência, mas não é boa prática.
Você já deu uma lida na apostila FJ-11 da Caelum?
Sugiro que dê uma estudada pois essas dúvidas serão sanadas.