Comparable em Arquivo TXT - [RESOLVIDO]

4 respostas
brunosardao

Pessoal,

Eu estou lendo um arquivo TXT e setando nas váriaveis de um classe arquivo os dados que preciso.

Porém, preciso ordenar o meu arquivo pela coluna de ID mas como a informação é uma string não está dando certo:

//ABAIXO ADICIONO A INFORMAÇÃO NA VARIAVEL NUM_JOB_ID

dados.setNum_ID_Job(dadosArq[13].split("/")[1]);      //NUM_JOB_ID

Coloquei também este método abaixo para comparar os ID´s e desta forma, posso usar o Collections.Sort para ordenar da forma que eu quero:

//COMPARACAO ENTRE ID PARA ORDENAR PELO PROPRIO CAMPO ID
    public int compare(Arquivo obj1, Arquivo obj2){
             return obj1.getNum_ID_Job() == obj2.getNum_ID_Job();

Se eu alterar a minha variável de String para Long, ela também dá problema, pois não adiciona a String em uma váriavel Long.

O que posso fazer para conseguir fazer a comparação por ID para ordenar meu arquivo ?

Obrigado,

4 Respostas

E

Como o seu atributo é uma String voce pode chamar o metoto compareTo da propria String e ele fará o trabalho…

//COMPARACAO ENTRE ID PARA ORDENAR PELO PROPRIO CAMPO ID  
    public int compare(Arquivo obj1, Arquivo obj2){  
             return obj1.getNum_ID_Job().compareTo(obj2.getNum_ID_Job());
brunosardao

E no momento em que usar o Collections, uso desta forma:

Collections.sort(col , compare<Arquivo>());
brunosardao

emersonat

Obrigado, funcionou o que você disse, mas só falta eu fazer alguns ajustes para fazer funcionar.

Criei a classe abaixo para a ordenação:

public class OrdenaPorID extends Arquivo implements Comparator<Arquivo> {

	@Override
	public int compare(Arquivo o1, Arquivo o2) {
		// TODO Auto-generated method stub
		return o1.getNum_ID_Job().compareTo(o2.getNum_ID_Job());
	}

}

depois no meu código, coloquei o meu Collections.Sort desta forma:

OrdenaPorID or = new OrdenaPorID();
                    Collections.sort(col, or);

Acabei de testar, funcionou certinho!!.

Obrigado,

vinilima
pra facilitar você pode fazer assim:
public Arquivo implements Comparable<Arquivo> {
    @Override
	public int compareTo(Arquivo o) {
		return num_ID_Job.compareTo(o.num_ID_Job);
	}
}
// e usar assim
Collections.sort(seuArrayDeArquivos);
Criado 25 de agosto de 2011
Ultima resposta 25 de ago. de 2011
Respostas 4
Participantes 3