Vector ou Arraylis?

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(int i=0; i < array.size();i++){
            for(int j=0 ; j < array.size();j++){
                if(array.get(j).equals(array.get(i))){
                   y++;
                }
            }
            array1.add(y);
            y=0;
        }
     
        Collections.sort(array);//esta é forma  correta de usar esta interface?

Obrigado!!!
[RESOLVIDO]

Para contar basta utilizar o método size().
Já para tratar as repetições você pode verificar antes de inserir se o objeto existe.
Algo +/- assim:

    List<Double> lista = new ArrayList<Double>();
    while((x++) < 5) {
         Double d = entra.nextDouble();
         if(!lista.contains(d)) {
              lista.add(d);  //Aqui ele só vai entrar se não encontrar um objeto igual
         }
    }

    System.out.println("Tamanho: " + lista.size());

[]´s

Daniel

[quote=yorgan]Para contar basta utilizar o método size().
Já para tratar as repetições você pode verificar antes de inserir se o objeto existe.
Algo +/- assim:

    List<Double> lista = new ArrayList<Double>();
    while((x++) < 5) {
         Double d = entra.nextDouble();
         if(!lista.contains(d)) {
              lista.add(d);  //Aqui ele só vai entrar se não encontrar um objeto igual
         }
    }

    System.out.println("Tamanho: " + lista.size());

[]´s

Daniel[/quote]

Oi,

Você pode fazer exatamente isso! E o uso do Collections está correto.

Exemplo.:

[code]ArrayList
array = new ArrayList();

double
num = 3.5, num2 = 4.5, num3 = 3.5, num4 = 5.0;

array.add(num2);
array.add(num4);
array.add(num3);
array.add(num);

Collections.sort(array);

for (int i = 0; i < array.size(); i++) {
System.out.println(array.get(i));
}[/code]

Saida:

3.5 3.5 4.5 5.0

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!

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

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:

[code]
System.out.println("Digite os componentes do ArrayList: ");
for (int i = 0; i < 5; ++i)
array.add(entra.nextDouble());
}

//Copia do arraylist para o set. Isso automaticamente ordena e descarta duplicatas!
Set elems = new TreeSet(array);

System.out.println(“Quantidade de elementos (sem duplicações):” + elems.size());
System.out.println(“Elementos:” + elems);[/code]

Nesse caso, é melhor usar um TreeMap:

System.out.println("Digite os componentes do ArrayList: ");  
for (int i = 0; i < 5; ++i)
   array.add(entra.nextDouble());  
}  

//Cria um mapa para fazer a contagem
Map<Double, Integer> contagem = new TreeMap<Double, Int>();

for (Double numero : array) {

   if (!contagem.contains(numero) { //Se aquele double não foi contado
       contagem.put(numero, 1);      //Então põe 1 em seu contador
   } else {
       //Caso contrário, soma 1
       contagem.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.

Estou tendo problema neste campo!!

 int x = 0;
        Scanner entra = new Scanner(System.in);
        ArrayList array = new ArrayList();
        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 contagem
   Map<Double, Integer> contagem = new TreeMap<Double, Integer>();

  [for (Double numero : array) {//problema

    if (!contagem.contains(numero)) { //Se aquele double não foi contado
        contagem.put(numero, 1);      //Então põe 1 em seu contador
    } else {
       //Caso contrário, soma 1
        contagem.put(numero, contagem.get(numero)+1);
    }
 }

  System.out.println("Quantidade de elementos (sem duplicações):" + array.size());//problema
  System.out.println("Elementos:" + array.keySet());//problema
  System.out.println("Quantidade de vezes que cada elemento apareceu:");//problema
  for (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!!!

Declare seu ArrayList assim:

List<Double> array = new ArrayList<Double>();  

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 funcionar
  System.out.println("Elementos:" + elems);//mudei para funcionar
  System.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

Gente valeu tava lendo o java.doc e as dica de vcs, a consegui ver meu erro!

int x = 0;
        Scanner entra = new Scanner(System.in);
        List<Double> array = new ArrayList<Double>();


        System.out.println("Digite os componentes do ArrayList: ");
        
        while((x++) < 5){
                array.add(entra.nextDouble());
        }

         //Cria um mapa para fazer a contagem
   Map<Double, Integer> contagem = new TreeMap<Double, Integer>();

   for (Double numero : array) {

    if (!contagem.containsKey(numero)) { //Se aquele double não foi contado
        contagem.put(numero, 1);      //Então põe 1 em seu contador
    } else {
       //Caso contrário, soma 1
        contagem.put(numero, contagem.get(numero)+1);
    }
 }
   Set<Double> elems = new TreeSet<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