Jak zamienić wartości arrayMap i klucze w Javie

Mam trochę problemów z odwróceniem danej mapy i przechowywaniem jej odwróconych kluczy i wartości na innej mapie. Mam prototyp metody w następujący sposób:

public static Map<String, Set<String>> reverse (Map <String, Set<String>> graph);

Więc jeśli mam przykładowe klucze do ukierunkowanego wykresu, takie jak:

{c -> arraySet{f, e}}
{b -> d}
{a -> arraySet{c, b}} 
{d -> g}
{e -> d}
{f -> arraySet{g, d}}

Muszę skutecznie odwrócić ten wykres, aby zamiast b -> d mieć d -> b.

Myślę, że wszystko to wymaga ode mnie wymiany wartości i kluczy na oryginalnym wykresie i dodania ich do odwrotnej mapy. Przypuszczam, że mógłbym przeglądać każdy zestaw wartości dla danego klucza na wykresie, a następnie przechowywać je na liście.

Niestety, mam problem z wdrożeniem tego i przemyśleniem. Naprawdę byłbym wdzięczny za posunięcie we właściwym kierunku.

questionAnswers(4)

yourAnswerToTheQuestion