HashMap<String, int>
parece que no funciona, pero HashMap<String, Integer>
funciona. ¿Alguna idea de por qué?java: HashMap <String, int> no funciona
Respuesta
No se pueden usar tipos primitivos como argumentos genéricos en Java. Utilizar en su lugar:
Map<String, Integer> myMap = new HashMap<String, Integer>();
Con auto-boxing/unboxing hay poca diferencia en el código. Auto-boxing significa que puede escribir:
myMap.put("foo", 3);
en lugar de:
myMap.put("foo", new Integer(3));
auto-boxing significa la primera versión se convierte implícitamente a la segunda. Auto-unboxing significa que puede escribir:
int i = myMap.get("foo");
en lugar de:
int i = myMap.get("foo").intValue();
La llamada implícita a intValue()
significa que si no se encuentra la clave que va a generar un NullPointerException
, por ejemplo:
int i = myMap.get("bar"); // NullPointerException
La razón es type erasure. A diferencia, por ejemplo, en C#, los tipos genéricos no se conservan en el tiempo de ejecución. Ellos son sólo "azúcar sintáctico" para la conversión explícita a guardar los haces esto:
Integer i = (Integer)myMap.get("foo");
Para dar un ejemplo, este código es perfectamente legal:
Map<String, Integer> myMap = new HashMap<String, Integer>();
Map<Integer, String> map2 = (Map<Integer, String>)myMap;
map2.put(3, "foo");
Su último ejemplo no funciona: No se puede convertir desde Map
¿Por qué no funciona con 'Float' y' Double'? –
teniendo en cuenta cada código por separado en una nueva línea, el código en la línea 5 se debe convertir primero en Entero antes de usar el método intValue() porque se considera como un objeto cuando se usa el método get(). –
GNU Trove apoyar esto, pero no el uso de los genéricos . http://trove4j.sourceforge.net/javadocs/gnu/trove/TObjectIntHashMap.html
Puede usar el tipo de referencia en argumentos genéricos, no en tipo primitivo. Así que aquí se debe utilizar
Map<String, Integer> myMap = new HashMap<String, Integer>();
y almacenar valor como
myMap.put("abc", 5);
Esto no responde a la pregunta – smac89
@ Smac89 No creo que esto responda correctamente la pregunta tampoco, pero es una respuesta.Entonces, la forma correcta de lidiar con esto es bajonear, no marcar. –
No puede utilizar tipos primitivos en HashMap
. int
, o double
no funcionan. Tienes que usar su tipo adjunto. para un ejemplo
Map<String,Integer> m = new HashMap<String,Integer>();
Ahora ambos son objetos, así que esto funcionará.
- 1. Java String replace no funciona
- 2. java HashMap clasificación <String, Entero>. ¿Cómo ordenarlo?
- 3. Java HashMap get funciona pero containsKey no
- 4. No se puede convertir un HashMap <String, String> en una interfaz que extiende Map <String, String>
- 5. Retorno de HashMap <String, String> cuando no hay clave
- 6. Cómo iterar el Arraylist <HashMap <String, String >>?
- 7. Java: comparar HashMap <String, Object> si el valor podría ser un Object []
- 8. HashMap <String, boolean> copie todas las claves en HashMap <String, Integer> e inicialice los valores en cero
- 9. Java: cómo convertir HashMap <String, Object> en la matriz
- 10. Java XStream con HashMap
- 11. Java: Enumeración del conjunto <String>
- 12. Cadena para HashMap JAVA
- 13. ¿Por qué no puedo crear un diccionario <string, dictionary <string, string >>?
- 14. Por qué java.util.Properties implementa Map <Object, Object> y no Map <String, String>
- 15. Volcar Java HashMap <K,V> a XML y
- 16. ordenar una lista de Mapa <String, String>
- 17. Uso <c:forEach> con HashMap
- 18. Java clase HashMap por valor
- 19. Map <String, String> JSON en
- 20. Java HashMap Quitar clave/valor
- 21. ¿Cómo funciona AsyncTask <String, Void, Void>?
- 22. comportamiento fallido de java HashMap
- 23. Java interruptor codificado vs HashMap
- 24. Actualización de Java HashMap clave
- 25. impresión HashMap En Java
- 26. Java HashMap o IdentityHashMap
- 27. JAXB para unmarshall <string> foobar</string>
- 28. ¿Cómo se imprime el contenido de un HashMap <String, String> en orden ascendente según sus valores?
- 29. Lista <Map <String, Object >> to org.json.JSONObject?
- 30. Java HashMap vs JSONObject
la elección de palabras para su pregunta es confusa, ¿puede aclarar? Y exactamente lo que no funciona, ¿puedes publicar el código? –
@aforloney - claramente este es un error de compilación. –