ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
329
329
EMPFEHLEN
-
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'?
-
Ich mache mir dafür immer eine Util-Methode:
Code java:
Oder generisch:
Code java:1 2 3 4 5 6 7 8
public static <K,V> void addToMultiMap(Map<K, Set<V>> map, K key, V value){ Set<V> s = map.get(key); if(s == null){ s = new HashSet<V>(); map.push(key,s); } s.add(value); }
-
Hallo,
danke für den Gedankenstoß
Ich habe es noch etwas verändert zu:
Sollte wahrscheinlich schneller gehen. Danke nochmals!Code java:1 2 3 4 5 6 7 8 9
public static <K,V> void add2Map(Map<K, Set<V>> map, K key, V value) { if (!map.containsKey(key)) { Set<V> add = new HashSet<V>(); map.put(key, add); } map.get(key).add(value); }
-
Hmm, naja du verwendest drei Zugriffe auf die Map und ich nur zwei. Ich denke weniger Zugriffe sind schneller.
-
Benutzt du wirklich nur 2 Zugriffe? Ich sehe drei: in den Zeilen 2,5,7. (Bin ein blutiger Anfänger, also bitte korrigieren wenn ich mich täusche).
Ausserdem kriegst du eine NullPointerException wenn der Schlüssel nicht vorhanden sein sollte ...
Ich habe noch eine neue Frage. Meine Struktur hat sich etwas vergrößert und es ist ein drittes Element dazu gekommen.
Was ist billiger:oder zweimalCode :1
Map<String, Map<String, HashSet<String>>>
? Es ist so zu verstehen, dass ein Typ mehrere Untertypen hat und jeder von diesen Untertypen noch eine Menge an Werten.Code :1
Map<String, HashSet<String>>
Gut daran find ich, dass ich schnell anhand der (beiden) Schlüssel an die Blätter komme, aber es gibt auch einen Anwendungsfall wo ich nach einem bestimmten Wert suchen muss und angeben für welche Untertypen er existiert.
Was würdet ihr raten?
Ähnliche Themen
-
Datenstruktur gesucht
Von trench140 im Forum C/C++Antworten: 4Letzter Beitrag: 27.05.09, 15:48 -
Hilfe bei Datenstruktur
Von _BlueScreen im Forum C/C++Antworten: 3Letzter Beitrag: 28.04.08, 10:45 -
Datenstruktur in C?
Von Buitre im Forum C/C++Antworten: 5Letzter Beitrag: 14.02.08, 14:41 -
Datenstruktur
Von Nick0110 im Forum JavaAntworten: 4Letzter Beitrag: 04.08.07, 19:47 -
Datenstruktur in Klasse (C++)
Von cpp_rookie im Forum C/C++Antworten: 8Letzter Beitrag: 07.05.07, 09:21





Zitieren

Login





