Pregunta

Es la decisión de Google similar a la de SortedMultiSet (pregunta StackOverflow) o es porque no hay uso de MultiKeyMap?

Soy consciente de que un suplente para MultiKeyMap puede ser el uso de una clase personalizada como una llave que contiene los múltiples claves como sus miembros de la clase. Por el contrario, me gusta el concepto de especificar varias claves al llamar al get de la MultiKeyMap.

La versión de Apache de MultiKeyMap es grande, pero estoy seriamente falta genéricos y, por tanto, mirado en Google Colecciones para una aplicación moderna de la misma. Si alguien tiene alguna idea de por qué Google no ha apoyado todavía o hay una mejor alternativa para que, por favor, responda.

¿Fue útil?

Solución

Tenemos una muy buena aplicación de un mapa de dos niveles, lo que llamamos una "mesa" (K1 es la "clave de fila" y K2 es la "llave de la columna"), y simplemente no hemos conseguido lanzado todavía. Pasado dos llaves, sin embargo, es los rendimientos decrecientes.

Otros consejos

Para su información, la respuesta aceptada fue respondida en marzo de 2010, pero en septiembre de 2010 guayaba incluido Table.

Creo que los genéricos podrían ser el sensacional para su aplicación aquí. Si nos fijamos en sólo la interfaz Map hay especificadores genéricos para el tipo de clave (K) y el tipo de valor (V). No creo que sería posible especificar que el uso de los genéricos fácilmente sin separar las implementaciones en múltiples clases (una para cada número de componentes clave).

Se necesitaría una clase para cada uno:

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

La aplicación subyacente está haciendo básicamente lo que usted sugiere (usando una clase personalizada). Sin embargo, no crea formalmente una clase para ella, todo se colocarán en línea. Es realmente un detalle de implementación. Sin embargo, para utilizar las colecciones de Google una clase personalizada para realizar la misma cosa funcionaría de la misma manera Estoy seguro de implementar hashCode () y equals ().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top