isso, preciso que as datas sejam ordenadas por mes na sequencia a
partir de uma data especifica para gravar datas de compras parceladas
no banco.
ja estou fazendo isso no loop, mas não sai na sequencia certa.
c.add(Calendar.MONTH,i);
nel
Bom, estou de saída mas ai vai uma sugestão.
Crie uma classe que implemente a interface Comparator de modo a efetuar comparação entre meses.
Cria uma List de Calendar e aplique o seu “Comparator”. Algo assim:
List<Calendar> datas = new ArrayList<Calendar>();
//após ter adicionado todas as datas
datas.sort(valores, new SuaClasseComparator());
Se preferir podes criar uma Lista de Date e tratar este Date com um Calendar dentro da classe Comparator, o que creio que seria mais adequado.
Abraços!
B
blst
Edulemos: o que o Oziz falou está correto
c.add(Calendar.MONTH, 1);
Ao invés de voce colocar a váriavel i, coloque 1. A cada loop no seu laço, o sistema adicionará um mes. Se voce deixar o i ele vai adicionar 1 mes, 2 meses, 3 meses e assim por diante.
Quando vc recupera o Calendar, o Date já é o atual… não precisa setar.
O metodo getInstance ja deverá te retornar uma instancia de GregorianCalendar
ViniGodoy
De onde surgiu essa informação de que são “pesados” demais? Pesados em que? Memória? Performance?
Acho muitíssimo improvável que eles vão dar qualquer problema na aplicação, embora seu código seja mesmo marginalmente mais eficiente.
LeoMarola
Oi Viny,
me refiro a nível de memória, tamanho do objeto. o Calendar agrega diversas informações que provavelmente não deverão ser usadas, as vezes simplesmente vamos precisar de dia/mes/ano e não das demais informações.
ViniGodoy
Olhando aqui, vi que ambos os códigos criam o mesmo número de calendars, tanto o seu, quanto o dele. Não houve otimização no seu código por usar o getInstance(), já que o getInstance() cria um novo calendar. A única diferença é que o getInstance() baseia-se em informações do local da plataforma onde o java estiver rodando, então seu código é mais multiplataforma.
Só dei o alerta pois performance dificilmente é uma justificativa plausível. Otimização prematura é tão prejudicial quanto não otimizar. Agora, claro que se não houver perda de legibilidade (como é o caso do seu código), uma otimizaçãozinha é sempre bem-vinda.
nel
Este tipo de discussão é sempre bem-vinda, pois no meu caso, agrega valores.
Mas edulemos, o seu problema foi resolvido? Se não foi, aplicou a ideia que eu citei acima?
Caso tenha sido resolvido, poste a solução pois outros podem vir a ter a mesma necessidade que a sua ok?
Abraços!
E
edulemos
Ok resolvido, as vezes agente não enexerga o problema
na nossa frente, obrigado a todos.
LeoMarola
ViniGodoy:
Olhando aqui, vi que ambos os códigos criam o mesmo número de calendars, tanto o seu, quanto o dele. Não houve otimização no seu código por usar o getInstance(), já que o getInstance() cria um novo calendar. A única diferença é que o getInstance() baseia-se em informações do local da plataforma onde o java estiver rodando, então seu código é mais multiplataforma.
Só dei o alerta pois performance dificilmente é uma justificativa plausível. Otimização prematura é tão prejudicial quanto não otimizar. Agora, claro que se não houver perda de legibilidade (como é o caso do seu código), uma otimizaçãozinha é sempre bem-vinda.