masslet
Lieutenant
- Registriert
- Juli 2004
- Beiträge
- 700
Hallo,
ich programmiere ein kleines Java-Tool, dass Daten aus .txt Dateien extrahieren und anschließend in Excel-Dateien schreiben soll.
Mein Hauptproblem derzeit ist die sinnvolle "interne" Speicherung der gesammelten Daten. Das Extrahieren ist kein Problem. Eine ArrayList wollte ich das nicht verwenden, primär da ich nicht immer über den gesamten Datenbestand iterieren möchte. Die Daten lassen sich jeweils einem Datum zuordnen, daher dachte ich das eine Treemap ein ganz guter Ansatz sein könnte. Key wäre das Datum (ATM als String) und Value ein Objekt, einer selbst erstellten Klasse (JOBGroup), das sämtliche Daten für einen Tag speichern soll.
Mit folgendem Code bekomme ich schön für jeden Tag einen entsprechenden Key, aber als Value wird immer das selbe Objekt JOBGroup referenziert. Zumindest hat es den Anschein, da sämtliche Einträge in der Treemap die gleichen Werte für startTimeJobGroup und endTimeJobGroup haben (die letzten die aus der Textdatei ausgelesen wurden).
Habe gerade eine geistige Blockade und keine Idee wie ich das sinnvoll lösen kann. Wäre für sämtliche Lösungsvorschläge dankbar!
ich programmiere ein kleines Java-Tool, dass Daten aus .txt Dateien extrahieren und anschließend in Excel-Dateien schreiben soll.
Mein Hauptproblem derzeit ist die sinnvolle "interne" Speicherung der gesammelten Daten. Das Extrahieren ist kein Problem. Eine ArrayList wollte ich das nicht verwenden, primär da ich nicht immer über den gesamten Datenbestand iterieren möchte. Die Daten lassen sich jeweils einem Datum zuordnen, daher dachte ich das eine Treemap ein ganz guter Ansatz sein könnte. Key wäre das Datum (ATM als String) und Value ein Objekt, einer selbst erstellten Klasse (JOBGroup), das sämtliche Daten für einen Tag speichern soll.
Mit folgendem Code bekomme ich schön für jeden Tag einen entsprechenden Key, aber als Value wird immer das selbe Objekt JOBGroup referenziert. Zumindest hat es den Anschein, da sämtliche Einträge in der Treemap die gleichen Werte für startTimeJobGroup und endTimeJobGroup haben (die letzten die aus der Textdatei ausgelesen wurden).
Habe gerade eine geistige Blockade und keine Idee wie ich das sinnvoll lösen kann. Wäre für sämtliche Lösungsvorschläge dankbar!
Code:
// Textdatei wird zeilenweise durchlaufen bis Ende erreicht wird
for (int i = 0; i < sOpenFile.length; i++) {
// Extrahiert die Zeiten; füllt startTimeJobGroup, endTimeJobGroup
extractTimes(i, 1, sOpenFile[i], sJobGroupStart);
extractTimes(i, 2, sOpenFile[i], sJobGroupEnd);
// Heute = ermitteltes Datum um 8:00 Uhr
GregorianCalendar today = new GregorianCalendar();
today.set(startTimeJobGroup.get(Calendar.YEAR), startTimeJobGroup.get(Calendar.MONTH), startTimeJobGroup.get(Calendar.DATE), 8, 0, 0);
// Morgen = ermitteltes Datum +1 Tag um 8:00 Uhr
GregorianCalendar tomorrow = new GregorianCalendar();
tomorrow.set(startTimeJobGroup.get(Calendar.YEAR), startTimeJobGroup.get(Calendar.MONTH), (startTimeJobGroup.get(Calendar.DATE) + 1), 8, 0, 0);
// Wenn der Startjob nach 8:00 Uhr (heute) und vor 8:00 Uhr (morgen) sowie der Endjob nach dem Startjob
// und vor 8:00 (morgen) gelaufen ist (*schweißvonderstirnwisch*) sollten die beiden zusammengehören
if (startTimeJobGroup.after(today) && startTimeJobGroup.before(tomorrow) && endTimeJobGroup.after(startTimeJobGroup) && endTimeJobGroup.before(tomorrow)) {
// Ein neues Objekt JOBGroup wird mit den gefundenen Start- und Endzeiten erstellt
// und in der TreeMap (dataOctopus) dem (String) Datum zugeordnet
String sDate = today.get(Calendar.DATE) + "." + (today.get((Calendar.MONTH)) + 1) + "." + today.get(Calendar.YEAR);
dataOctopus.put(sDate, new JOBGroup(startTimeJobGroup, endTimeJobGroup));
}
}