が存在するとき、私はこのようなのTreeMapを作成したキーに対してnullを返します他の理由によりハッシュ):JavaのTreeMapの値は
public int compareDay(Date lhs, Date rhs) {
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(lhs);
cal2.setTime(rhs);
boolean sameDay = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR);
if (sameDay) {
return 0;
} else {
return -1;
}
}
とにかく、問題は以下のスニペットです。最後の要素は、取得するとnullです。
public List<MyType> convert(Map<Date, List<MyInput>> inputByDate, Map<Date, Boolean> isDoneByDate) {
List<MyType> result = Lists.newArrayList();
for (Date dateKey : inputByDate.keySet()) {
boolean isDone = false;
Boolean res = isDoneByDate.get(dateKey);
if (res != null) {
isDone = res;
}
List<MyInput> inputs = inputByDate.get(dateKey);
MyType retrieved=new MyType(dateKey, inputs, isDone);
result.add(retrieved);
}
return result;
}
私ははっきりと(を例として)があることがわかりますデバッガnullでない値を持つ3つのキーと最後のスニペットを実行します。私はここで何かが欠けているはずです。なぜなら、各キーが以前に有効なペアと照合されていることを検証した場合、レポートがnullになることはありません。どんな助けでも大歓迎です。
コンパレータは、==と!=だけでなく、<, ==, >を決定する必要があります。これは負の0または正の戻り値です。コンパイラのドキュメントをチェックしてください。 -1はlhs
Btw、 'inputByDate()'ではなく 'inputByDate.keySet()'を意味しますか? 'reportsByDay'とは何ですか? – Thomas
私の実際のコードに適用した私の "難読化"が間違っていました。今修正されました。 –