Ich schreibe gerade ein Java-Programm, das Werte in eine AreaChart
anzeigt, und dazu habe ich eine ArrayList mit dem Namen dataList
vom generischen Typ AreaChartPair
.Java - wie man diesen repetitiven Code vermeidet
Jede AreaChartPair
enthält einen X-Achsen (String) Wert und einen Y-Achsen (Integer) Wert.
Die X-Achse sind Daten und die Y-Achse ist ein Zähler und da alle Daten aus einer Datei gelesen werden, sind die Daten in einer unsortierten Reihenfolge. sie sortieren Ich benutze diese Funktion:
dataList.sort(Comparator.comparing(AreaChartPair::getXAxisStringValue));
, die nicht vollständig mein Problem zu lösen ist, da es nur die ersten alphanumerischen Zeichen vergleichen (dh 02.09.2030
würde nach 01.01.2000
, weil 02
nach 01
kommt)
um dieses Problem zu lösen, habe ich einfach das Datum yyyy.mm.dd
von dd.mm.yyyy
umgekehrt, sortiert die Liste mit der Funktion oben und umgekehrt danach die Zeichenfolge zurück zu dd.mm.yyyy
Meine Frage ist, wie ich diesen Block von Code vereinfachen kann, da es sich wiederholt:
//replaces the current data with the reversed string
for (int index = 0; index < dataList.size(); index++) {
dataList.set(index, new AreaChartPair(model.reverseDate(dataList.get(index).getXAxisStringValue()),
dataList.get(index).getYAxisIntegerValue()));
}
//sorts the data
dataList.sort(Comparator.comparing(AreaChartPair::getXAxisStringValue));
//reverses the string back to normal, so it can be displayed
for (int index = 0; index < dataList.size(); index++) {
dataList.set(index, new AreaChartPair(model.reverseDate(dataList.get(index).getXAxisStringValue()),
dataList.get(index).getYAxisIntegerValue()));
}
Irgendwelche Vorschläge?
Erstellen Sie einen benutzerdefinierten Komparator, der den umgekehrten Vergleich durchführt? – RobAu