私が何かを理解するのを手伝ってください
私はから始めています
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
時間でソートされたリストになります。この正確な割り当てが期待されます。
次に、(グループ2からの)さらに3つのイベントを同じキューに追加します。これらのイベントも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);
}
何が足りないのですか?