Hallo allerseits,
ich programmiere gerade eine kleinere Anwendung und stehe gerade vor folgendem Problem:
Um meine Daten zu speichern habe ich mich an der Struktur von SQL-Datenbanken/Tabellen orientiert. Eine direkte Verwendung von SQL kam nicht in Frage da ich, falls sich das Tool als nützlich erweist, es auch gerne öffentlich machen möchte und keinem zumuten möchte, einen SQL-Server installieren zu müssen.
Auf "Tabellen"-Ebene habe ich nun beispielsweise folgende Konstrukte:
Heißt, eine "Tabelle" besteht aus einer bestimmten Anzahl an "Einträgen", welche die gewünschten Informationen beinhalten. Jeder Eintrag hat hierbei eine eindeutige ID und einen Wert, in der HashMap refernziert diese ID das komplette Eintrags-Objekt.
Mein Problem ist nun, dass sowohl schnell überprüfen möchte, ob ein bestimmter Wert in der HashMap enthalten ist und dass ich basierend auf der Id schnell auf einzelne Einträge zugreifen möchte. Der letzte Fall ist ja dadurch abgehandelt, dass die Id als Key der HashMap gehandhabt wird. Wie aber kriege ich den ersten Fall hin? Aktuell fällt mir nur die quick&dirty-Methode ein:
Alle Einträge der HashMap auslesen, bis eine Übereinstimmung erzielt wird.
Eine weitere Möglichkeit wäre es, den Wert als Key zu nehmen, dann habe ich aber das gleiche Problem für die IDs.
Gibt es hier irgendeine bessere Möglichkeit? Ist hier die HashMap vielleicht schlecht gewählt? Sollte ich eine andere Datenstruktur verwenden?
Die oben gezeigten Konstrukte sind nur exemplarisch, mir ist klar, dass ich bei Einträgen mit nur zwei Werten die Zuordnung <ID,Object> in <ID,Value> ändern könnte, ich habe aber auch Eintrags-Typen, die eben mehr als nur einen Value haben können.
ich programmiere gerade eine kleinere Anwendung und stehe gerade vor folgendem Problem:
Um meine Daten zu speichern habe ich mich an der Struktur von SQL-Datenbanken/Tabellen orientiert. Eine direkte Verwendung von SQL kam nicht in Frage da ich, falls sich das Tool als nützlich erweist, es auch gerne öffentlich machen möchte und keinem zumuten möchte, einen SQL-Server installieren zu müssen.
Auf "Tabellen"-Ebene habe ich nun beispielsweise folgende Konstrukte:
Code:
public class DatabaseDateEntry {
private int id;
private String dateValue;
public DatabaseDateEntry() {
}
...
}
...
public class DatabaseDateTable {
private HashMap<Integer, DatabaseDateEntry> dateEntries;
private int count;
public DatabaseDateTable() {
count = 0;
dateEntries = new HashMap<Integer, DatabaseDateEntry>();
}
...
}
Heißt, eine "Tabelle" besteht aus einer bestimmten Anzahl an "Einträgen", welche die gewünschten Informationen beinhalten. Jeder Eintrag hat hierbei eine eindeutige ID und einen Wert, in der HashMap refernziert diese ID das komplette Eintrags-Objekt.
Mein Problem ist nun, dass sowohl schnell überprüfen möchte, ob ein bestimmter Wert in der HashMap enthalten ist und dass ich basierend auf der Id schnell auf einzelne Einträge zugreifen möchte. Der letzte Fall ist ja dadurch abgehandelt, dass die Id als Key der HashMap gehandhabt wird. Wie aber kriege ich den ersten Fall hin? Aktuell fällt mir nur die quick&dirty-Methode ein:
Alle Einträge der HashMap auslesen, bis eine Übereinstimmung erzielt wird.
Eine weitere Möglichkeit wäre es, den Wert als Key zu nehmen, dann habe ich aber das gleiche Problem für die IDs.
Gibt es hier irgendeine bessere Möglichkeit? Ist hier die HashMap vielleicht schlecht gewählt? Sollte ich eine andere Datenstruktur verwenden?
Die oben gezeigten Konstrukte sind nur exemplarisch, mir ist klar, dass ich bei Einträgen mit nur zwei Werten die Zuordnung <ID,Object> in <ID,Value> ändern könnte, ich habe aber auch Eintrags-Typen, die eben mehr als nur einen Value haben können.