Hi, ich hab hier ein Problem:
Mein Problem ist, dass ich eigentlich zwei Tabellen in einer Datenbanktabelle stehen habe, die sich nur durch den Timestamp unterscheiden. Beispiel:
Durch meine Schleife wird aber die Zeile (132, a, aa) "verschluckt", und ich weiß nicht, wie ich den Tabellen-Split mit der verschachtelten Schleife eleganter formulieren kann.
Hat jemand vielleicht eine Idee?
Java:
public static List<List<List<Object>>> getTodayData() throws Exception {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("Europe/Berlin"));
List<List<List<Object>>> results = new ArrayList<>();
List<List<Object>> data = MDB.get();
data.sort(Comparator.comparingLong(a -> ((Timestamp) a.get(0)).getTime()));
for (int k = 0; k < data.size(); k++) {
List<List<Object>> list = new ArrayList<>();
while (k == 0
|| k < data.size()
&& ((Timestamp) data.get(k - 1).get(0)).getTime()
== ((Timestamp) data.get(k).get(0)).getTime()) {
list.add(data.get(k++));
}
double[] sums = new double[7];
for (List<Object> os : list) {
for (int i = 0; i < sums.length; i++) {
sums[i] += (double) os.get(i + 3);
}
}
list.add(
new ArrayList<>(
List.of(
list.get(0).get(0),
"sums",
"---",
sums[0],
sums[1],
sums[2],
sums[3],
sums[4],
sums[5],
sums[6])));
for (List<Object> os : list) {
os.set(0, df.format(new Date(((java.sql.Timestamp) os.get(0)).getTime())));
for (int i = 3; i < os.size(); i++) {
os.set(i, String.format("%.2f", (Double) os.get(i)));
}
}
results.add(list);
}
return results;
}
Mein Problem ist, dass ich eigentlich zwei Tabellen in einer Datenbanktabelle stehen habe, die sich nur durch den Timestamp unterscheiden. Beispiel:
123 | a | aa |
123 | b | bb |
132 | a | aa (diese Zeile ist weg ...) |
132 | b | bb |
132 | c | cc |
Durch meine Schleife wird aber die Zeile (132, a, aa) "verschluckt", und ich weiß nicht, wie ich den Tabellen-Split mit der verschachtelten Schleife eleganter formulieren kann.
Hat jemand vielleicht eine Idee?