2010-01-12 73 views
2

我创建了一个类DateTime(封装了GregorianCalendar)。我也创建了一个类的事件。 我想创建一个事件集合,从中可以检索事件的日期。例如: 例如: 事件类型为Event; date1和date2的类型是DateTime,也是date1.equals(date2); 'events'是我的事件集合。如何将我创建的类设置为TreeMap中的键(Java)

event.put(date1, event) 

将“事件”添加到收藏,这样我可以通过

event.get(date2) 

我想用树状图中执行该事件集合,因为我可能想打印排序的所有事件的检索按日期。

那么如何将DateTime设置为TreeMap的关键?我应该将什么添加到DateTime?还有什么可以做的? 谢谢。

回答

9

你只需要拥有DateTime实施Comparable<DateTime>,东西线沿线的:

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; 
    } 
} 

Comparable interface是记录here

5

有两种方式:

  1. 制作日期时间实现Comparable <日期时间>。定义compareTo()方法。

  2. 定义一个实现Comparator < DateTime>的类(可以是匿名的)。根据需要定义它的compare()方法。将该类的一个实例传递给您的TreeMap的构造函数。

相关问题