Я создал TreeMap так:Java TreeMap возвращает нуль для ключа, когда значение существует
Map<Date, List<MyInput>> inputsByDate = new TreeMap<>(new Comparator<Date>() {
@Override
public int compare(Date lhs, Date rhs) {
return dateUtil.compareDay(lhs, rhs);
}
});
Мой метод в компараторе не очень, но по крайней мере определяет сходство (я не использую HashMap с равными и хэш из-за других причин):
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;
}
Когда я бегу последний фрагмент кода с помощью отладчика я могу ясно видеть, что есть (в качестве примера) 3 клавиши со значениями, которые не нулевой. Я должен упустить что-то здесь, потому что я не вижу, как отчеты могут быть пустыми, если я проверял, что каждый ключ сопоставляется с действительной парой. Любая помощь будет принята с благодарностью.
Компаратор должен определить <, ==, >, а не только == и! =. Это отрицательное значение 0 или положительное возвращаемое значение. Проверьте документы для компараторов. -1 означает lhs
Btw, вы имеете в виду 'inputByDate.keySet()' вместо 'inputByDate()'? И что такое 'reportsByDay'? – Thomas
Мой плохой, моя «обфускация», которую я применил к моему фактическому коду, была неисправна. Исправлено сейчас. –