¿Por qué la guayaba no proporciona una manera de transformar las claves del mapa?

Esta pregunta ya está publicada aquí:Cómo convertir Map <String, String> a Map <Long, String> usando guava

Creo que la respuesta de CollinD es apropiada:

Todos los métodos de Guava para transformar y filtrar producen resultados perezosos ... la función / predicado solo se aplica cuando es necesario cuando se usa el objeto. No crean copias. Sin embargo, debido a eso, una transformación puede romper fácilmente los requisitos de unSet.

Digamos, por ejemplo, que tienes unMap<String, String> que contiene tanto "1" como "01" como claves. Ambos son distintosStrings, y así elMap Puede contener legalmente tanto como claves. Si los transformas usandoLong.valueOf(String), sin embargo, ambos mapean al valor1. Ya no son claves distintas. Esto no va a romper nada si crea una copia del mapa y agrega las entradas, ya que cualquier clave duplicada sobrescribirá la entrada anterior para esa clave. Un perezosamente transformadoMapSin embargo, no tendría forma de hacer cumplir claves únicas y, por lo tanto, rompería el contrato de unMap.

Esto es cierto, pero en realidad no entiendo por qué no se hace porque:

Cuando se produce la transformación de la clave, si se "combinan" 2 claves, se puede generar una excepción de tiempo de ejecución, o podríamos pasar un indicador para indicar a Guava que tome cualquier valor de los múltiples valores posibles para la clave recién calculada (posibilidades a prueba de fallos / fallos) )

Podríamos tener un Maps.transformKeys que produce un Multimap

¿Hay un inconveniente que no veo al hacer tales cosas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta