Нет стандартной реализации оболочки для MultiValuedMap - PullRequest
0 голосов
/ 04 февраля 2020

Я что-то упустил или действительно нет реализации по умолчанию для Apache нового MultiValuedMap, который можно было бы использовать для простого переноса при условии Map<K, ? extends Collection<V>>?

In Другими словами, я ищу прямую замену устаревшего MapUtils.multiValueMap фабричного метода : ни одна из существующих реализаций, таких как HashSetValuedHashMap, не отвечает моим потребностям, поскольку мне нужно использовать IdentifyHashMap в качестве бэкэнд-карты

1 Ответ

0 голосов
/ 04 февраля 2020

В конце концов мне пришлось самому реализовать необходимый вспомогательный метод:

public static <K, V, C extends Collection<V>> MultiValuedMap<K, V> multiValueMap(Map<K, C> map,
        final Factory<C> collectionFactory) {
    return new AbstractMultiValuedMap<K, V>(map) {
        @Override
        protected Collection<V> createCollection() {
            return collectionFactory.create();
        }
    };
}

Хотя, как бы ни была проста реализация, я не могу поверить, что ее нет в commons-collections уже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...