Ordenação de Date[RESOLVIDO]

2 respostas
gmmascarin

Pessoal

Estou ordenando um bean de acordo com um atributo Date, entretanto a ordenação não está sendo feita da maneira desejada. Vejam meu fonte e os retornos que obtive através do print.

private void ordenarLogFuncionariosPorDataDia(List<LogTerminal> listLogTerminal){
		Collections.sort (listLogTerminal, new Comparator<LogTerminal>() {
	        public int compare(LogTerminal p1, LogTerminal p2) {
	        	System.out.println("*****************************");
	        	System.out.println("p1.getDtSequenciaAtend()==" + p1.getDtSequenciaAtend());
	        	System.out.println("p2.getDtSequenciaAtend()==" + p2.getDtSequenciaAtend());
	        	int temp = p1.getDtSequenciaAtend().compareTo(p2.getDtSequenciaAtend());
	        	System.out.println("retorno: " + temp);
            	return temp;
            }
        });
	}

Console:


p1.getDtSequenciaAtend()==Thu Aug 04 10:56:55 GMT-03:00 2011
p2.getDtSequenciaAtend()==Thu Aug 04 10:56:55 GMT-03:00 2011
retorno: -1


p1.getDtSequenciaAtend()==Thu Aug 04 10:56:55 GMT-03:00 2011
p2.getDtSequenciaAtend()==Thu Aug 04 10:56:55 GMT-03:00 2011
retorno: 0


p1.getDtSequenciaAtend()==Thu Aug 04 10:56:55 GMT-03:00 2011
p2.getDtSequenciaAtend()==Thu Aug 04 10:56:55 GMT-03:00 2011
retorno: 1


p1.getDtSequenciaAtend()==Thu Aug 04 10:56:55 GMT-03:00 2011
p2.getDtSequenciaAtend()==Thu Aug 04 10:56:55 GMT-03:00 2011
retorno: 1


p1.getDtSequenciaAtend()==Thu Aug 04 10:56:55 GMT-03:00 2011
p2.getDtSequenciaAtend()==Thu Aug 04 10:56:55 GMT-03:00 2011
retorno: 0

Valeu

2 Respostas

E

p1 e p2 devem ter alguma diferença nos milissegundos.

gmmascarin

Valeu entanglement

A solução:

private void ordenarLogFuncionariosPorDataDia(List<LogTerminal> listLogTerminal){
		Collections.sort (listLogTerminal, new Comparator<LogTerminal>() {
	        public int compare(LogTerminal p1, LogTerminal p2) {
	        	
	        	Calendar c1 = Calendar.getInstance(); 
	        	c1.setTime(p1.getDtSequenciaAtend());
	        	
	        	Calendar c2 = Calendar.getInstance(); 
	        	c2.setTime(p2.getDtSequenciaAtend());
	        	
	        	int compara = c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR);
	        	
	        	if (compara == 0){
	        		compara = c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH);
	        		
	        		if (compara == 0){
	        			compara = c1.get(Calendar.DAY_OF_MONTH) - c2.get(Calendar.DAY_OF_MONTH);	        			
	        		}
	        	}
	        	
            	return compara;
            }
        });
	}

[]s

Criado 5 de agosto de 2011
Ultima resposta 5 de ago. de 2011
Respostas 2
Participantes 2