such passenden Datentyp

Dolch

Mitglied
ich habe ein kleines Problem

ich hole mir Daten aus einer DB und dort aus zwei verschieden Tabellen

sprich ich hole ein Telefonnummer die eine bestimmte TelefonKategorie_id hat, die passende Bezeichnung zur Kategorie liegt dann in einer anderen Tabelle

mein Problem ist das ich mehrere Nummern mit natürlich verschieden Kategorien rausholen muss, jetzt will ich natürlich nicht zu jeder Nummer die Kategorie_ID anzeigen sondern die entsprechende Bezeichnung

sprich ich bräuchte ein Datentyp dem ich ein Index eintragen kann (hier will ich die ID verwenden) und dazu muss dann natürlich die Bezeichnung gesichert sein. Problem ist natürlich das auch anderes rumm funktionieren muss sprich es wird die Bezeichnung angegeben und man bekommt dazu den Index (damit es wieder gespeichert werden kann mit der ID)

hatte mal die Idee mit SimpleValueSet leider habe ich mit dem Datentyp noch keinerlei Erfahrungen ...
 
Hallo,

naja ich wüsste nicht, dass es sowas in beide Richtungen gibt. Aber du könntest, die Klasse HashMap erweitern und damit dafür sorgen, dass die "Rückwärts-Funktionalität" zur Verfügung steht.

MFG

zEriX
 
Hallo,

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @author Thomas.Darimont
 *
 */
public class LookupTableExampe {

    /**
     * @author Thomas.Darimont
     *
     */
    static class LookupTable<TKey, TValue> implements Map<TKey, TValue>{
        Map<TKey,TValue> map = new HashMap<TKey, TValue>();
        Map<TValue,TKey> reverseMap = new HashMap<TValue,TKey>();
        public void clear() {
            // TODO Auto-generated method stub
            
        }
        public boolean containsKey(Object key) {
            return map.containsKey(key);
        }
        public boolean containsValue(Object value) {
            return reverseMap.containsKey(value);
        }
        public Set<java.util.Map.Entry<TKey, TValue>> entrySet() {
            return map.entrySet();
        }
        public TValue get(Object key) {
            return map.get(key);
        }
        
        public TKey getByValue(TValue value){
            return reverseMap.get(value);
        }
        
        public boolean isEmpty() {
            return map.isEmpty();
        }
        public Set<TKey> keySet() {
            return map.keySet();
        }
        public TValue put(TKey key, TValue value) {
            reverseMap.put(value, key);
            return map.put(key, value);
        }
        public void putAll(Map<? extends TKey, ? extends TValue> m) {
            for(java.util.Map.Entry<? extends TKey, ? extends TValue> entry : m.entrySet()){
                put(entry.getKey(),entry.getValue());
            }
        }
        public TValue remove(Object key) {
            TValue value = map.remove(key);
            reverseMap.remove(value);
            return value;
        }
        public int size() {
            return map.size();
        }
        public Collection<TValue> values() {
            return reverseMap.keySet();
        }
        
        @Override
        public String toString() {
            return "Forward: " + map +" Reverse: " + reverseMap;
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        LookupTable<String,String> lookupTable  = new LookupTable<String,String>();
        lookupTable.put("AAA", "ZZZ");
        
        System.out.println(lookupTable.get("AAA"));
        System.out.println(lookupTable);
        
        System.out.println(lookupTable.getByValue("ZZZ"));
        System.out.println(lookupTable);
        
        lookupTable.remove("AAA");
        System.out.println(lookupTable);
    }
}

Ansonsten findet man bei den Jakarta Commons eine entsprechende BidiMap (Bi Directional...) Implementierung:
http://commons.apache.org/collections/api-release/index.html

Gruß Tom
 
danke für eure Hilfe :)

habs jetzt zwar anders gelöst aber nur weil es schneller geht :) web dynpro hat da so seine eigenen Methoden die ich nutzten konnte
 

Neue Beiträge

Zurück