Como definir uma classe da minha criação como uma chave em um Treemap (Java)
Pergunta
Eu criei uma classe DateTime (que envolve o GregoriaCalendar). Eu também criei um evento de classe. Gostaria de criar uma coleção de eventos a partir dos quais posso recuperar um evento até sua data. Por exemplo: o evento é do evento de tipo; Date1 e Date2 são do tipo DateTime e também Date1.Equals (Date2); 'Eventos' é minha coleção de eventos.
event.put(date1, event)
acrescentará 'evento' à coleção para que eu possa recuperá -la por
event.get(date2)
Penso em usar um Treemap para implementar esta coleção de eventos, porque posso querer imprimir todos os eventos classificados por data.
Então, como definir o DateTime para ser uma chave de um Treemap? O que devo adicionar ao DateTime? E o que mais fazer? Obrigado.
Solução
Você só precisa ter o DateTime
implemento Comparable<DateTime>
, algo parecido com:
class DateTime implements Comparable<DateTime> {
GregorianCalendar calendar;
...
public int compareTo(DateTime other) {
if (calendar.equals(other.calendar))
return 0;
else if (calendar.before(other.calendar))
return -1;
else
return 1;
}
}
o Interface comparável está documentado aqui.
Outras dicas
Existem duas maneiras:
Faça do DateTime implementar Comparável <TateTime>. Defina o método compareto ().
Definir uma classe (pode ser anônima) que implementa Comparador <TateTime>. Defina seu método compare () conforme necessário. Passe uma instância dessa classe para o construtor do seu Treemap.