私は次のようArrays.sort(schedule, c);
に c がコンパレータのインスタンスである場所を呼び出しています。
import java.util.Comparator;
public class FirstOccComparator implements Comparator<AbstractEvent> {
public int compare(AbstractEvent event1, AbstractEvent event2) {
int result = 0;
if (event1 == null || event2 == null) {
//System.out.println("null");
}
else if (event1.hasMoreOccurrences() && event2.hasMoreOccurrences()) {
result = event1.nextOccurrence().compareTo(event2.nextOccurrence());
}
return result;
}
}
私が得ている出力は、本来あるべきものではありません。ここで誰かが私を正しい方向に向けることができるかどうか疑問に思っています。これは私が今までに作成した最初の並べ替えアルゴリズムであり、まだ私にとって新しい概念 (コンパレータと実装) を使用しているため、私のコードに関する複数の質問について申し訳ありません:)
編集 これは出力の違いです: http://pastebin.com/LWy1jqkt
イベントには 2 種類あります。これらは hasMoreOccurrences() メソッドと nextOccurrence() メソッドです。
デイリーイベント
public boolean hasMoreOccurrences() {
boolean result = false;
Date check = nextOccurrence();
timesCalled--;
if (check instanceof Date && check != null) {
result = true;
}
return result;
}
public Date nextOccurrence() {
if (timesCalled > recurrences) {
return null;
}
else {
Calendar cal = Calendar.getInstance();
cal.setTime(startTime);
cal.add(Calendar.DATE, timesCalled);
timesCalled++;
return cal.getTime();
}
}
ウィークリーイベント
public boolean hasMoreOccurrences() {
Date tmp = nextOccurrence();
timesCalled--;
boolean result = false;
if (tmp instanceof Date && tmp != null) {
result = true;
}
return result;
}
public Date nextOccurrence() {
Calendar cal = Calendar.getInstance();
cal.setTime(startTime);
cal.add(Calendar.DATE, timesCalled*7);
if (cal.getTime().compareTo(this.endTime) > 0) {
return null;
}
else {
timesCalled++;
return cal.getTime();
}
}