recorrer example entre ejemplos ejemplo diferencia java types integer hashmap

example - recorrer hashmap java foreach



¿Por qué al compilador de Java no le gusta primitive int como tipo para los valores en HashMap? (2)

Está bien con Integer , pero no está bien con int - Los genéricos de Java solo funcionan con tipos de referencia , básicamente :(

Pruebe esto, aunque tenga en cuenta que va a encajonar todo:

HashMap<String,Integer> userName2ind = new HashMap<String,Integer>(); for (int i=0; i<=players.length; i++) { userName2ind.put(orderedUserNames[i],i+1); }

El compilador se queja de este código:

HashMap<String,int> userName2ind = new HashMap<String,int>(); for (int i=0; i<=players.length; i++) { userName2ind.put(orderedUserNames[i],i+1); }

Escribe "tipo inesperado" y apunta en int . Si reemplazo int por String e i+1 por i+"1" , la compilación va bien. ¿Qué pasa con aquí?


Si tiene colecciones pequeñas, entonces usar tipos de referencia probablemente sea correcto , pero hay alternativas y una buena es trove4j . Trove hace un buen trabajo al recrear la API de colecciones utilizando primitivos puros. El resultado es un uso de memoria mucho menor y, en muchos casos, un mejor rendimiento al insertar / buscar. Tu ejemplo sería este:

TObjectIntHashMap<String> userName2ind = new TObjectIntHashMap<String>(); for (int i=0; i<=players.length; i++) { userName2ind.put(orderedUserNames[i],i+1); }

El único inconveniente, en mi experiencia, es la ausencia de implementaciones simultáneas de estos, por lo que debe descubrir otra forma de administrar la seguridad de subprocesos.