Ich schreibe eine Anwendung, die eine große Anzahl grundlegender Benutzerdaten im folgenden Format einliest; sobald sie eingelesen ist, kann der Benutzer anhand seiner E-Mail nach den Daten eines Benutzers suchen:
NAME ROLE EMAIL
---------------------------------------------------
Joe Bloggs Manager jbm@company.com
John Smith Consultant jsc@company.com
Alan Wright Tester awt@company.com
...
Das Problem, das ich habe, ist, dass ich eine große Anzahl von Daten aller Personen speichern muss, die in dem Unternehmen gearbeitet haben. Die Datei, die diese Daten enthält, wird jährlich zu Berichtszwecken erstellt, aber das Programm muss in der Lage sein, schnell auf diese Daten zuzugreifen.
Die Art und Weise, wie ich auf diese Dateien zugreifen möchte, besteht darin, ein Programm zu haben, das den Benutzer nach dem Namen der eindeutigen E-Mail des Mitarbeiters fragt, und das Programm soll dann den Namen und die Rolle aus dieser Zeile der Datei zurückgeben. Ich habe schon mit Textdateien herumgespielt, aber ich weiß nicht, wie ich mit mehreren Datenspalten umgehen soll, wenn ich diese große Datei durchsuchen will.
Welches ist das beste Format für die Speicherung solcher Daten? Eine Textdatei? XML? Die Größe macht mir nichts aus, aber ich möchte sie so schnell wie möglich durchsuchen können. Die Datei wird viele Einträge enthalten müssen, wahrscheinlich über die 10K-Marke im Laufe der Zeit.
EDITAR: Ich habe mich für die Methode der XML-Serialisierung entschieden. Ich habe es geschafft, den Code für Encoding arbeiten perfekt, aber die Decoding-Code unten funktioniert nicht.
XMLDecoder d = new XMLDecoder(
new BufferedInputStream(new FileInputStream("data.xml")));
List<Employee> list = (List<Employee>) d.readObject();
d.close();
for(Employee x : list) {
if(x.getEmail().equals(userInput)) {
// do stuff
}
}
Wenn das Programm auf List<Employee> list = (List<Employee>) d.readObject();
wird eine Ausnahme ausgelöst, die besagt, dass "Employee cannot be cast to java.util.List". Ich habe ein Kopfgeld auf dieses Problem ausgesetzt und jeder, der mir helfen kann, dieses Problem ein für alle Mal zu lösen, wird viele schöne Punkte bekommen.
EDIT 2: Ich habe mir das Problem etwas genauer angesehen und bin auf Folgendes gestoßen Serialisierung als eine mögliche Antwort. Wenn jemand in diese für mich schauen kann, wie ich keine Erfahrung mit Serialisierung oder Deserialisierung habe, wäre ich sehr dankbar. Es kann ein Objekt ohne Probleme bereitstellen, aber ich muss es wirklich in das gleiche Format zurückgeben, wie es ging in (Liste).
EDIT 3: Dieses Problem macht mich langsam wirklich wahnsinnig, und um ehrlich zu sein, glaube ich langsam, dass es ein unlösbares Problem ist. Wenn möglich, könnte jemand einen Blick auf den Code zu nehmen und helfen, eine Lösung für mich?