Pessoal estou com um problema sou novo em JAVA , o problema e o seguinte, estou alocando os dados em um arrayList, são números(double) depois gostaria de ordena-los, contar todos os elementos e retirar todas as repetições, bom o meu problema esta aí em conta e retirar as repetições ,meu codigo seque abaixo o que seria melhor para este caso Vector ou Arraylist?
System.out.println("Digite os componentes do ArrayList: ");while((x++)<5){array.add(entra.nextDouble());}for(inti=0;i<array.size();i++){for(intj=0;j<array.size();j++){if(array.get(j).equals(array.get(i))){y++;}}array1.add(y);y=0;}Collections.sort(array);//estaéformacorretadeusarestainterface?
Obs: Provavelmente existe algum método que já retira a repetição de dentro do ArrayList! Só não sei o nome.
Em relação a usar Vector ou ArrayList(), é aconSelhavel o uso do ArrayList(). Vector está deprecated!
Hoje mesmo estava falando pro pessoal do trabalho, das maravilhas do ArrayList =)
Tchauzin!
MarcioCasteloBranco
Agradeço a ajuda de todos, só que gostaria de contar, cada observção repetida , e depois retiro , tipo o numero total de observação eu manipulo com array.size a orddenação com interface Collections os outro fatores que eu não estou conseguindo abstrair!!l!
Exemplo:
array depois array
1 - x1 == 2; - 1
1 - x2 == 1; - 2
2 - x3 == 1 - 3
3
ViniGodoy
Acho que a forma mais simples de fazer isso é transferir os dados para um TreeSet. Ele automaticamente ordena os elementos e descarta as duplicatas.
O código fica assim:
System.out.println("Digite os componentes do ArrayList: ");for(inti=0;i<5;++i)array.add(entra.nextDouble());}//Copiadoarraylistparaoset.Issoautomaticamenteordenaedescartaduplicatas!Set<Double>elems=newTreeSet<Double>(array);System.out.println("Quantidade de elementos (sem duplicações):"+elems.size());System.out.println("Elementos:"+elems);
ViniGodoy
Nesse caso, é melhor usar um TreeMap:
System.out.println("Digite os componentes do ArrayList: ");for(inti=0;i<5;++i)array.add(entra.nextDouble());}//Cria um mapa para fazer a contagemMap<Double,Integer>contagem=newTreeMap<Double,Int>();for(Doublenumero:array){if(!contagem.contains(numero){//Se aquele double não foi contadocontagem.put(numero,1);//Então põe 1 em seu contador}else{//Caso contrário, soma 1contagem.put(numero,contagem.get(numero)+1);}}System.out.println("Quantidade de elementos (sem duplicações):"+contagem.size());System.out.println("Elementos:"+contagem.keySet());System.out.println("Quantidade de vezes que cada elemento apareceu:");for(Map.Entry<Double,Integer>par:contagem.entrySet()){System.out.println(par.getKey()+" = "+par.getValue());}
O TreeMap associa uma chave (seu double) com um valor (nesse caso, a quantidade de vezes que esse double apareceu).
As chaves são únicas e ordenadas. Por isso, o keySet associado ao mapa já vai ter os valores sem duplicações.
MarcioCasteloBranco
Estou tendo problema neste campo!!
intx=0;Scannerentra=newScanner(System.in);ArrayListarray=newArrayList();System.out.println("Digite os componentes do ArrayList: ");//System.out.println(entra.nextDouble());while((x++)<5){array.add(entra.nextDouble());}Collections.sort(array);//Cria um mapa para fazer a contagemMap<Double,Integer>contagem=newTreeMap<Double,Integer>();[for(Doublenumero:array){//problemaif(!contagem.contains(numero)){//Se aquele double não foi contadocontagem.put(numero,1);//Então põe 1 em seu contador}else{//Caso contrário, soma 1contagem.put(numero,contagem.get(numero)+1);}}System.out.println("Quantidade de elementos (sem duplicações):"+array.size());//problemaSystem.out.println("Elementos:"+array.keySet());//problemaSystem.out.println("Quantidade de vezes que cada elemento apareceu:");//problemafor(Map.Entry<Double,Integer>par:array.entrySet()){System.out.println(par.key()+" = "+par.value());}System.out.println(array);
Map tem restrições, se depois quiser adiciona-la para Jtable que esta em uma Jframe e depois lançar para meu Banco de Dados?
Obrigado!!!
ViniGodoy
Declare seu ArrayList assim:
List<Double>array=newArrayList<Double>();
MarcioCasteloBranco
Consegui entender porem , como sou iniciante vou ler o java doc para entender mais desta interface que achei muito legal contudo esta parte não funcionou!
System.out.println("Quantidade de elementos (sem duplicações):"+elems.size());//mudei para funcionarSystem.out.println("Elementos:"+elems);//mudei para funcionarSystem.out.println("Quantidade de vezes que cada elemento apareceu:");for(Map.Entry<Double,Integer>par:elems.){//aqui ta o problema não sei como implementa este metodo .entrySet!!System.out.println(par.getKey()+" = "+par.getValue());}
Fora o java.doc teria uma outra literatura eu estudar!!!
Desde já Agradeço Márcio
MarcioCasteloBranco
Gente valeu tava lendo o java.doc e as dica de vcs, a consegui ver meu erro!
intx=0;Scannerentra=newScanner(System.in);List<Double>array=newArrayList<Double>();System.out.println("Digite os componentes do ArrayList: ");while((x++)<5){array.add(entra.nextDouble());}//Cria um mapa para fazer a contagemMap<Double,Integer>contagem=newTreeMap<Double,Integer>();for(Doublenumero:array){if(!contagem.containsKey(numero)){//Se aquele double não foi contadocontagem.put(numero,1);//Então põe 1 em seu contador}else{//Caso contrário, soma 1contagem.put(numero,contagem.get(numero)+1);}}Set<Double>elems=newTreeSet<Double>(array);System.out.println("Quantidade de elementos (sem duplicações):"+elems.size());System.out.println("Elementos:"+elems);System.out.println("Quantidade de vezes que cada elemento apareceu:");for(Map.Entry<Double,Integer>par:contagem.entrySet()){System.out.println(par.getKey()+" = "+par.getValue());
Realmente o Java nos permite com muito estudo e dedicação fazer coisas incríveis!
Valeu amigos