请帮我理解一些事情
我从一个
private Queue<SomeEvent> future =
new PriorityQueue(CAPACITY, new SomeEventComparatorByTime());
然后,我将 5 个事件(来自第 1 组)添加到队列中,每个事件从 10:49:00 开始。
ScheduledEvent{ userId='group_1_uid1'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid2'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid3'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid4'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid5'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
然后我通过一些简单的逻辑将事件分解为 2,递增时间如下。此打印输出显示队列的当前内容。
ScheduledEvent{ userId='group_1_uid1'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid2'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid3'} { startTime=3/31/2013 10:50:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid4'} { startTime=3/31/2013 10:50:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid5'} { startTime=3/31/2013 10:51:00, repeat=RUN_ONCE }
最后,我得到了按SomeEvent
时间排序的列表。这种精确的分配是意料之中的。
然后,我将另外 3 个事件(来自第 2 组)添加到同一个队列中。这些活动也从 10:49:00 开始
将事件添加到队列后,我得到:
ScheduledEvent{ userId='group_1_uid1'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid2'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_2_uid4'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_2_uid6'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid5'} { startTime=3/31/2013 10:51:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid3'} { startTime=3/31/2013 10:50:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_2_uid5'} { startTime=3/31/2013 10:49:00, repeat=RUN_ONCE }
ScheduledEvent{ userId='group_1_uid4'} { startTime=3/31/2013 10:50:00, repeat=RUN_ONCE }
请注意,订单是......这里没有排序。为什么?我认为随着新元素添加到队列中,它的位置由比较器确定
for (SomeEvent e : group.getEvents()) {
future.offer(e);
}
请问我错过了什么?