package org.erlide.engine.model.erlang;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class MapUtils {
public static <K, V> Map<V, List<K>> inverseList(final Map<K, List<V>> map) {
final Map<V, List<K>> result = new LinkedHashMap<>();
for (final Map.Entry<K, List<V>> entry : map.entrySet()) {
for (final V v : entry.getValue()) {
if (!result.containsKey(v)) {
result.put(v, new ArrayList<K>());
}
result.get(v).add(entry.getKey());
}
}
return result;
}
public static <K, V> Map<V, Set<K>> inverseSet(final Map<K, Set<V>> map) {
final Map<V, Set<K>> result = new LinkedHashMap<>();
for (final Map.Entry<K, Set<V>> entry : map.entrySet()) {
for (final V v : entry.getValue()) {
if (!result.containsKey(v)) {
result.put(v, new HashSet<K>());
}
result.get(v).add(entry.getKey());
}
}
return result;
}
}