tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
329
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    pinsleepe pinsleepe ist offline Mitglied Bronze
    Registriert seit
    Jul 2008
    Ort
    Kiel (SH)
    Beiträge
    31
    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'?
     

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Ich mache mir dafür immer eine Util-Methode:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    
    public static void addToMultiMap(Map<String, Set<String>> map, String key, String value){
        Set<String> s = map.get(key);
        if(s == null){
            s = new Set<String>();
            map.push(key,s);
         }
         s.add(value);
    }

    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);
    }
     

  3. #3
    pinsleepe pinsleepe ist offline Mitglied Bronze
    Registriert seit
    Jul 2008
    Ort
    Kiel (SH)
    Beiträge
    31
    Hallo,
    danke für den Gedankenstoß

    Ich habe es noch etwas verändert zu:
    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);
      }
    Sollte wahrscheinlich schneller gehen. Danke nochmals!
     

  4. #4
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Hmm, naja du verwendest drei Zugriffe auf die Map und ich nur zwei. Ich denke weniger Zugriffe sind schneller.
     

  5. #5
    pinsleepe pinsleepe ist offline Mitglied Bronze
    Registriert seit
    Jul 2008
    Ort
    Kiel (SH)
    Beiträge
    31
    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:
    Code :
    1
    
    Map<String, Map<String, HashSet<String>>>
    oder zweimal
    Code :
    1
    
    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.
    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

  1. Datenstruktur gesucht
    Von trench140 im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 27.05.09, 15:48
  2. Hilfe bei Datenstruktur
    Von _BlueScreen im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 28.04.08, 10:45
  3. Datenstruktur in C?
    Von Buitre im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 14.02.08, 14:41
  4. Datenstruktur
    Von Nick0110 im Forum Java
    Antworten: 4
    Letzter Beitrag: 04.08.07, 19:47
  5. Datenstruktur in Klasse (C++)
    Von cpp_rookie im Forum C/C++
    Antworten: 8
    Letzter Beitrag: 07.05.07, 09:21