Esiste un tipo di tabella di ricerca chiavi / chiavi fornito in .NET?

4

Sembra una cosa abbastanza semplice da aggiungere, ma voglio solo assicurarmi che .NET non ne fornisca già uno e mi salvi dall'aggiungere codice non necessario:

Ho bisogno di una tabella di ricerca (come un dizionario ) che invece utilizzando una coppia chiave / valore, usa la prima chiave per trovare la seconda chiave e viceversa. Ad esempio:

theList.Add("foo", "bar");
x = theList["foo"]; // Returns "bar"
y = theList["bar"]; // Returns "foo"

Grazie in anticipo!

    
posta Jarryd Le Breton 02.08.2015 - 09:27
fonte

2 risposte

9

Non esiste questo tipo di dati, probabilmente perché questo è un requisito molto speciale che può essere facilmente risolto utilizzando un dizionario e aggiungendo semplicemente entrambe le coppie

 theDictionary.Add("foo", "bar");
 theDictionary.Add("bar", "foo");

Ovviamente, puoi inserirlo in una funzione generica come

void MyDictAdd(Dictionary<T,T> dict, T key1, T key2)
{
    dict.Add(key1,key2);
    dict.Add(key2,key1);
}
    
risposta data 02.08.2015 - 09:39
fonte
0

Un'altra possibilità sarebbe quella di creare un metodo che cerchi sia chiavi che valori. Anche questo sarebbe più complesso per il mix O (n) per la ricerca. Ma ridurrebbe l'utilizzo della memoria.

string GetValue(string search, Dictionary<string, string> dictionary) {
    foreach(var pair in dictionary)
    {
        if (pair.Key == search) {
            return pair.Value;
        }
        else if (pair.Value == search) {
            return pair.Key;
        }
    }
    return null;
}
    
risposta data 02.08.2015 - 09:54
fonte

Leggi altre domande sui tag