Pergunta

É a decisão do Google semelhante àquela para SortedMultiSet (Pergunta de Stackoverflow)ou é porque não há uso de MultiKeyMap?

Estou ciente de que uma alternativa para MultiKeyMap pode ser usar uma classe personalizada como uma chave que contém as múltiplas teclas como seus membros de classe. Pelo contrário, gosto do conceito de especificar várias chaves ao chamar a chegada do MultiKeyMap.

Versão de Apache de MultiKeyMap é ótimo, mas estou perdendo gravemente genéricos e, portanto, analisei as coleções do Google para uma implementação moderna dela. Se alguém tem alguma idéia de por que o Google ainda não o apoiou ou há uma alternativa melhor para isso, responda.

Foi útil?

Solução

Temos uma implementação muito boa de um mapa de duas camadas, que chamamos de "tabela" (K1 é a "chave da linha" e K2 é a "Chave da coluna"), e ainda não o lançamos ainda. As duas teclas anteriores, no entanto, estão diminuindo os retornos.

Outras dicas

Para sua informação, a resposta aceita foi respondida em março de 2010, mas em setembro de 2010 a goiaba incluída Table.

Eu acho que os genéricos podem ser o showstopper para implementação aqui. Se você olhar apenas a interface do mapa, existem especificadores genéricos para o tipo de chave (k) e o tipo de valor (v). Não acredito que seja possível especificá -lo usando genéricos facilmente sem separar as implementações em várias classes (uma para cada número de componentes -chave).

Você precisaria de uma aula para cada um:

MultiKeyMap2<K1,K2,V>
MultiKeyMap3<K1,K2,K3,V>
MultiKeyMap4<K1,K2,K3,K4,V>
MultiKeyMap5<K1,K2,K3,K4,K5,V>

A implementação subjacente está basicamente fazendo o que você sugere (usando uma classe personalizada). No entanto, ele não cria formalmente uma classe para ela, tudo está inlinado. É realmente um detalhe de implementação. Mas usar as coleções do Google, uma classe personalizada para executar a mesma coisa operaria da mesma maneira que tenho certeza de implementar hashcode () e iguals ().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top