Как сделать инверсию карты с помощью Guava с неуникальными значениями?

Как мы можем сделать это с помощью Guava? Обратите внимание на присутствие List в возвращаемом типе, поскольку многие ключи могут отображаться на одно и то же значение в любой карте нормалей.

public static <K, V> Map<V, List<K>> inverse(Map<K, V> map){
    Map<V, List<K>> result = new LinkedHashMap<V, List<K>>();
    for (Map.Entry<K, V> entry : map.entrySet()) {
        if(!result.containsKey(entry.getValue())){
            result.put(entry.getValue(), new ArrayList<K>());                
        }
        result.get(entry.getValue()).add(entry.getKey());
    }        
    return result;        
}

BiMap , похоже, настаивает на единственности значений, но У меня нет такой роскоши.

15
задан ColinD 9 September 2010 в 17:01
поделиться