Por que a Guava não fornece uma maneira de transformar as chaves do mapa

Esta questão já está postada aqui:Como converter Map <String, String> para Mapear <Long, String> usando goiaba

Eu acho que a resposta do CollinD é apropriada:

Todos os métodos da Guava para transformar e filtrar produzem resultados preguiçosos ... a função / predicado só é aplicada quando necessário conforme o objeto é usado. Eles não criam cópias. Por causa disso, porém, uma transformação pode facilmente quebrar os requisitos de umSet.

Vamos dizer, por exemplo, você tem umMap<String, String> que contém "1" e "01" como chaves. Ambos são distintosStrings, e assim oMap pode legalmente conter tanto como chaves. Se você os transformar usandoLong.valueOf(String), no entanto, ambos mapeiam para o valor1. Eles não são mais chaves distintas. Isso não vai quebrar nada se você criar uma cópia do mapa e adicionar as entradas, porque as chaves duplicadas substituirão a entrada anterior dessa chave. Um preguiçosamente transformadoMap, no entanto, não teria como aplicar chaves exclusivas e, portanto, quebraria o contrato de umaMap.

Isso é verdade, mas na verdade eu não entendo porque isso não é feito porque:

Quando a transformação da chave acontece, se duas chaves são "mescladas", uma exceção de tempo de execução poderia ser levantada, ou poderíamos passar um sinalizador para indicar ao Guava para pegar qualquer valor dos múltiplos valores possíveis para a chave recém-computada (failfast / failsafe) )

Poderíamos ter um Maps.transformKeys que produz um Multimap

Existe uma desvantagem que não vejo em fazer essas coisas?

questionAnswers(1)

yourAnswerToTheQuestion