Mam wiele wystąpień dwie klasy Children
i Animal
, które mają wiele-do-wielu relacji encji.Jakich struktur danych używam tutaj?
Chcę mieć strukturę danych, tak, że biorąc pod uwagę Children
mogę uzyskać listę Animal
, które są mapowane do niego i na odwrót. Dla każdego podanego Animal
mogę uzyskać listę Children
, które są do niej mapowane.
Potrzebuję tej struktury danych, aby była współbieżna, tak aby była dostępna dla dowolnego wątku.
Więc podano przykładowe odwzorowanie:
Child1 -> Animal1
Child1 -> Animal2
Child1 -> Animal3
Child2 -> Animal2
Child2 -> Animal3
Child3 -> Animal3
Zapytania na Child1
pragnę uzyskać zwrócony listę: [ Animal1, Animal2, Animal2 ]
.
Zapytanie o numer Animal2
Chcę otrzymać zwrócony list: [ Child2, Child3 ]
.
Jedyny sposób, w jaki mogłem to zrobić, to użycie słownika i listy dla każdego elementu w tym słowniku (zarówno dla zwierząt, jak i dla dzieci), ale musiałbym również poradzić sobie z blokowaniem synchronizacji list, co jest kłopotliwe .
Naprawdę powinieneś dodać tablicę odwzorowań, taką jak AnimalChildren, aby pomóc w usunięciu wielu osób. – mattytommo
Używanie rzeczowników w liczbie mnogiej dla nazwy klasy jest złym stylem; rozważ zmianę nazwy swojej klasy na "Dziecko". –
Czy ta relacja wiele do wielu zmienia się z czasem, czy też, gdy masz już dzieci i zwierzęta, ich relacje są stałe? O wiele łatwiej jest wykonać operację threadassy, jeśli nie ma zapisów. –