Szukam struktury danych podobnej do słownika, który zwraca zestaw wszystkich powiązanych elementów do klucza.Czy istnieje struktura danych przechowująca zestawy danych w .NET?
Na przykład, można go użyć w następujący sposób:
var data = new FancyDataStructure();
data.Add(new string[] {"Elizabeth", "Liz", "Betty"});
data.Add(new string[] {"Bob", "Robert", "Rob"});
string[] alternateNames1 = data["Betty"];
string[] alternateNames2 = data["Liz"]
W tym przypadku alternateNames1 będzie tablica zawierająca „Liz” i „Elżbieta” i alternateNames2 będzie tablica zawierająca „Elżbieta” i "Betty".
Nie chcę tego wymyślać na nowo, ale nie mogłem znaleźć żadnych przykładów takiej struktury.
Aktualizacja
Dziękuję osobom, które zostały napisane z powrotem z sugestiami. Wiele osób zasugerowało użycie wersji Dictionary<string, IEnumerable<string>>
. Obecnie używam tego podejścia, ale w rzeczywistości nie spełnia ono wymagań, nie będąc strasznie trudnym do utrzymania. Każda wartość na każdej liście musi być w stanie funkcjonować jako klucz do każdej innej wartości dodanej do niego w zestawie.
Tak więc, biorąc pod uwagę, co następuje: "Liz"
data.Add(new string[] {"Elizabeth", "Liz"}
data.Add(new string[] {"Liz", "Betty"}
alternates = data["Betty"];
spodziewałbym zastępcy do teraz zawierać "Elizabeth", a
Wygląda na to, że mógłbym po prostu zbudować taką konstrukcję, która odpowiadałaby moim potrzebom. Zachowaj pomysły!
Brian
Duplikat http://stackoverflow.com/questions/10458/is-there-a-set-data-structure-in-net – Eloff
Nie wierzę, że to duplikat. To nie wymaga struktury zestawu jako takiej. –