Ordenação de números não funciona

3 respostas
V

Alquém poderia me ajudar, por favor… o Java está vendo só o primeiro número de cada linha, e não a linha como um todo
Exemplo, ao invés de ficar assim:
16 MB
32 MB
64 MB
96 MB
128 MB
192 MB
256 MB
512 MB
640 MB
1024 MB
2048 MB

Fica assim: já usei o Collections.sort(vetor) , pois está em um objeto da classe Vector, mas não funciona…

1024 MB
16 MB
128 MB
192 MB
2048 MB
256 MB
32 MB
512 MB
64 MB
640 MB
96 MB

3 Respostas

B

Ola,

Crie um comparator que faça o parser do numero e compare… assim:

class Comparator<String> public int compare(String o1, String o2) { long n1 = Double.parseDouble(o1.replaceAll("MB","")); long n2 = Double.parseDouble(o2.replaceAll("MB","")); if(n1 > n2) return 1; if(n1 == n2) return 0; return -1; }

E passe a sua collection e o comparator para o metodo sort que receba estes parametros na Collection…

H

O que está acontecendo é o Java esta ordenando em ordem alfabética por isso que o 512 MB vem ante do 64 MB.

Agora dá um jeito aí de separa os números do string “MB”.

Boa Sorte e Bom trabalho !

M

É isso…

O java ta reconhecendo os dados como caracteres e nao como numeros.
Voce precisa converter o String em um tipo numerico. depois disso com certeza vai funcionar.

Criado 27 de julho de 2006
Ultima resposta 28 de jul. de 2006
Respostas 3
Participantes 4