Como definir uma classe da minha criação como uma chave em um Treemap (Java)

StackOverflow https://stackoverflow.com/questions/2050746

  •  20-09-2019
  •  | 
  •  

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.

Foi útil?

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:

  1. Faça do DateTime implementar Comparável <TateTime>. Defina o método compareto ().

  2. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top