import java.time.*;
import static java.time.temporal.ChronoUnit.HOURS;
import java.util.*;
public class Test {
static class Eintrag {
final LocalDateTime zeit;
final int anzahl;
public Eintrag(LocalDateTime zeit, int anzahl) {
this.zeit = zeit;
this.anzahl = anzahl;
}
@Override
public String toString() {
return "[" + zeit.toString() + "/" + anzahl + "]";
}
}
public static void main(String[] args) {
List<Eintrag> eintraege = createDummies();
Map<LocalDateTime, Integer> summen = summiere(eintraege);
System.out.println("Eintraege: " + eintraege);
System.out.println("Summen: " + summen);
}
private static Map<LocalDateTime, Integer> summiere(
List<Eintrag> eintraege) {
Map<LocalDateTime, Integer> summen = new HashMap<>();
for (Eintrag e : eintraege) {
LocalDateTime hour = e.zeit.truncatedTo(HOURS);
if (!summen.containsKey(hour)) {
summen.put(hour, 0);
}
summen.put(hour, summen.get(hour) + e.anzahl);
}
return summen;
}
private static List<Eintrag> createDummies() {
Random rand = new Random(1L);
LocalDateTime start = LocalDateTime.parse("2019-04-18T22:00");
List<Eintrag> eintraege = new ArrayList<>();
for (int i = 0; i < 20; i++) {
LocalDateTime cur = start.plusMinutes(rand.nextInt(400));
eintraege.add(new Eintrag(cur, rand.nextInt(20)+1));
}
return eintraege;
}
}