Zum Inhalt springen

Datenstruktur


white.apple

Empfohlene Beiträge

Hallo,

ich habe mal wieder eine Anfängerfrage :new

Ich habe ein Array, das ich auslese.

Die Elemente sehen z.B. so aus

"db1_typ2", "db2", "db1_typ7", "db9_typ7"

Anhand dessen, was vor dem "_" steht(falls vorhanden), weiß ich wie eine Datenbank heißt.

Das Andere ist eine Information über den Typ der Db (keine Info ist auch eine Info).

Ich suche nach einer Datenstruktur, in der ich die Zugehörigkeit abspeichern könnte, also z.B.

typ2 -> db1

typ7 -> db1, db9

usw.

Ich dachte an eine Map, sehe aber, dass ein Schlüssel nur einmal vorkommen darf(logisch). Ich könnte die Werte natürlich vorher z.B. in einem Set abspeichern und dann eine Map<String, Set> anlegen aber ich möchte nicht für jeden Typ einen Set anlegen müssen (ich weiß vorher nicht wie viele typen es überhaupt gibt..). Geht das 'on the fly'?

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich würde von java.util.vector erben und mir einen NamedVector bauen. alles was der noch kann, ist seinen eigenen namen zurück zu geben ( public String getName() ). und im konstruktor wird der name belegt.

NamedVector nv = new NamedVector("typ7");

nv.add("db1");

nv.add("db9"):
und die ganzen NamedVector kann man dann in einen Vector stopfen.
Vector <NamedVector> vectorlist;

so ungefähr...

bigredeyes

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich würde von java.util.vector erben und mir einen NamedVector bauen. alles was der noch kann, ist seinen eigenen namen zurück zu geben ( public String getName() ). und im konstruktor wird der name belegt.

NamedVector nv = new NamedVector("typ7");

nv.add("db1");

nv.add("db9"):
und die ganzen NamedVector kann man dann in einen Vector stopfen.
Vector <NamedVector> vectorlist;
so ungefähr... bigredeyes
edit: sonst tuts bestimmt auch ne
HashMap<String, Vector<String>>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antwort.

Ich denke aber, dass es ungeeignet wäre: ich laufe durch die Elemente und müsste jedes mal einen neuen Vektor mit Namen erstellen, z.B. "typ7".Was ist wenn im nächsten Schritt "typ9" auftaucht und im übernächsten wieder 7? Wie soll ich da noch auf den entsprechenden Vektor zugreifen?

Oder verstehe ich das falsch?

Ich hab's anders versucht und zwar habe ich mir eine neue Klasse angelegt:

DbData (String db, String typ)
Dann habe ich ein Set definiert
Set<DbData> dataSet = new TreeSet<DbData>(new DbDataComparator());
Beim Durchlaufen meiner Schleife werden nun die entsprechenden Daten in den Set geschoben, in etwa so:
dataSet.add(new DbData("db1", "typ7"));

Da ich die DbData mit Gettern ausgestattet habe, kann ich ziemlich billig alle Datenbanken für ein Typ bekommen.

Nun möchte ich aber noch fragen ob sich Obiges verbessern lässt? Wie?

(Sorry, wenn die Haarspalterei nervt, aber ich möchte wirklich-wirklich was dabei lernen.)

Danke für Euer Verständnis :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

also, zur hashmap:

KEY ist ein string. also dein db1, db9, ...

VALUE jeweils ein Vector voller Strings.

HashMap <String , Vector<String>> allItems = new HashMap<String , Vector<String>>();
im programm kannst du dann eine funktion hinzufügen
public void addToMap(String db, String typ){

  if(allItems.containsKey(db)){

    allItems.get(db).add(typ);

  }else{

    Vector<String> toAdd = new Vector<String>();

    toAdd.add(typ);

    allItems.put(db, toAdd);

  }

}

du kriegst also mit der get-methode den schon erstellten vector für die entsprechende db zurück. das suchen übernimmt die hashmap für dich.

bigredeyes

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich weiß doch nicht wirklich weiter :rolleyes:

Ich hab's etwas komplizierter gemacht(noch eine "Ebene" mehr) deswegen bezieh ich meine Frage lieber auf den letzten Lösungsvorschlag von bigredeyes.

Wie könnte ich da die Schlüssel(db) für einen bestimmten (typ) bekommen wo die (typ)s jetzt in einem Vektor sind und somit nicht direkt ansprechbar?

Ich möchte gerne für einen definierten (typ) alle (db) bekommen, die ihn in ihrer Liste enthalten.

Und noch eine Frage:

wenn der Schlüssel nicht einfacher Datentyp ist sondern einer, der aus 2 Komponenten besteht. Kann man dann die Schlüssel aussuchen, die z.B. als 2.tes Element "bah" stehen haben?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...