Почему Гуава не предоставляет способ преобразования ключей карты

Этот вопрос уже виден здесь:Как преобразовать Map <String, String> в Map <Long, String> с помощью гуавы

Я думаю, что ответ CollinD уместен:

Все методы преобразования и фильтрации в Guava дают ленивые результаты ... функция / предикат применяется только при необходимости, когда используется объект. Они не создают копии. Из-за этого, однако, преобразование может легко нарушить требованияSet.

Допустим, например, у вас естьMap<String, String> который содержит и «1», и «01» в качестве ключей. Они оба разныеStringс, и такMap может на законных основаниях содержать оба ключа. Если вы преобразуете их, используяLong.valueOf(String)Тем не менее, они оба отображаются на значение1, Они больше не являются отдельными ключами. Это ничего не сломает, если вы создадите копию карты и добавите записи, потому что любые дублирующиеся ключи будут перезаписывать предыдущую запись для этого ключа. Лениво преображаетсяMapтем не менее, не было бы никакого способа принудительного применения уникальных ключей и, следовательно, нарушило быMap.

Это правда, но на самом деле я не понимаю, почему это не сделано, потому что:

Когда происходит преобразование ключа, если «объединены» 2 ключа, может возникнуть исключение времени выполнения или мы можем передать флаг, чтобы указать Guava принять любое значение из нескольких возможных значений для вновь вычисляемого ключа (возможности failfast / failsafe )

Мы могли бы иметь Maps.transformKeys, который создает Multimap

Есть ли недостаток, которого я не вижу в таких вещах?

Ответы на вопрос(1)

Ваш ответ на вопрос