Мои два списка list2
и filetemp
имеют одинаковую длину и содержат даты и температуры. Несколько элементов в списках показаны ниже:
[1946-01-12, 1946-01-12, 1946-01-12, 1946-01-13, 1946-01-13, 1946-01-13, 1946-01-14, 1946-01-14, 1946-01-14]
[-1.3, 0.3, -2.8, -6.2, -4.7, -4.3, -1.5, -0.2, -0.4]
Я хочу поместить их в хэш-карту с датами в качестве ключа и температурой в качестве значения. Поскольку у меня есть несколько значений температуры, соответствующих каждой дате, я хочу суммировать значения температуры для каждого дня (или, если возможно, рассчитать среднюю температуру для каждого дня), чтобы каждая дата на карте соответствовала средней температуре этой даты. Моя проблема сейчас в том, что моя карта выглядит так:
1946-01-12: -2.8
1946-01-13: -4.3
1946-01-14: -0.4
, поэтому вместо суммирования, например, -1,5 + (- 0,2) + (- 0,4) для даты 1946-01-14, она просто возвращает последнюю температуру этой даты. Кто-нибудь знает как это исправить?
public Map<LocalDate, Double> avarageTemperatures(LocalDate dateFrom, LocalDate dateTo) {
List<LocalDate> list2 = new ArrayList<>();
for (Weather weather : weatherData) {
list2.add(weather.getDateTime());
}
Map<LocalDate, Double> map = new HashMap<>();
List<Double> filetemp = new ArrayList<>();
for (Weather weather : weatherData) {
filetemp.add(weather.getTemperature());
}
Double val= 0.0;
for (int i=1; i<list2.size(); i++) {
if(list2.get(i)==list2.get(i-1)) {
val+= filetemp.get(i);
map.put(list2.get(i), val);
} else {
val=filetemp.get(i);
map.put(list2.get(i), val);
}
}
Set<Map.Entry<LocalDate, Double>> entrySet = map.entrySet();
for(Map.Entry<LocalDate,Double> entry : entrySet) {
if(!entry.getKey().isAfter(dateTo) && !entry.getKey().isBefore(dateFrom)) {
System.out.println(entry.getKey()+": "+(entry.getValue()));
}
}
return map;
}