2011-02-14 17 views
6

Me pregunto si los arrays en Java podría hacer algo como esto:¿Java admite matrices asociativas?

int[] a = new int[10]; 
a["index0"] = 100; 
a["index1"] = 100; 

Sé que he visto características similares en otros idiomas, pero no estoy muy familiarizado con los detalles ... Sólo que hay formas de asociar valores con constantes de cadena en lugar de meros índices numéricos. ¿Hay alguna manera de lograr tal cosa en Java?

Respuesta

3

No sé nada acerca de C++, pero probablemente en busca de una clase que implementa the Map interface.

+0

aaah ,,, entonces existe. la clase Map. Gracias. Soy nuevo en java :) – Fugogugo

+0

@Fugogugo Dado que eres nuevo en Java, vale la pena señalar que no se puede pegar nada en un mapa. Si usa un TreeMap cualquiera que sea su clave necesita implementar la interfaz Comparable. Si usa HashMap, asegúrese de tener el código hash e iguala los métodos anulados en las claves que se colocan en el mapa. Sin embargo, las implementaciones predeterminadas de hashCode e iguales serán suficientes en muchos casos. –

+0

espera, ¿qué? tan confuso comentario –

2

Lo que se necesita es java.util.Map<Key, Value> interfaz y sus implementaciones (por ejemplo) con HashMapString como clave

+0

Probablemente un 'HashMap'. –

+0

@Jacob te refieres a 'Hashtable' –

+2

@FooBah Uh, no. –

17

no se puede hacer esto con una matriz de Java. Parece que quieres usar un java.util.Map.

Map<String, Integer> a = new HashMap<String, Integer>(); 

// put values into the map 
a.put("index0", 100); // autoboxed from int -> Integer 
a.put("index1", Integer.valueOf(200)); 

// retrieve values from the map 
int index0 = a.get("index0"); // 100 
int index1 = a.get("index1"); // 200 
+0

ah, entonces es así ... hashmap ¿eh? gracias :) – Fugogugo

+2

@Fugogugo: 'HashMap' es una clase implementadora; 'Map' es la interfaz. Recomiendo la codificación contra la interfaz 'Map', que en este caso significa declarar su variable como un' Map' y no como 'HashMap'. –

0

¿Está buscando la clase HashMap<k,v>()? Vea el javadocs aquí.

En términos generales, el uso sería:

HashMap<String, int> a = new HashMap<String,int>(); 
a.put("index0", 100); 

etc.

+2

Los mapas no pueden usar primitivas. Tendría que ser un 'Map '; Del mismo modo, generalmente es una mejor práctica declararlo como un "Mapa" y no como un "Mapa Hash". –

+0

Ya lo intento. sí no puede usar primitivo. pero el concepto es correcto. gracias. :) – Fugogugo

2

para guardar cosas con claves de cadena, se necesita un mapa. No puede usar corchetes en un mapa. Puede hacer esto en C++ porque admite la sobrecarga del operador, pero Java no lo hace.

Hay a proposal to add this syntax for maps, pero se agregará para Java 8 at the earliest.

+0

Su enlace Java 8 está roto. –

+0

@Andrew Coleson: aagh, ese es un error muy estúpido; Disculpas por haberlo hecho, y gracias por señalarlo. Fijo. –

0

java aún no tiene matrices asociativas. Pero en su lugar puede usar un mapa hash como alternativa.

Cuestiones relacionadas