2011-03-25 22 views
12
private static HashMap<Integer, Bitmap> mBitmapCache;   
mBitmapCache.put(R.drawable.bg1,object);      

R.drawable.bg1 es un int ... pero quiero convertir en Integer porque Hashmap toma un Integer ... y cuando sacar las múltiples objetos en cuestión de segundos, se crea un tiempo de ejecución del objeto entero que afecta la ejecución del código ...Cómo convertir a entero int

Respuesta

27
int iInt = 10; 
Integer iInteger = new Integer(iInt); 
+3

"no debe llamar al constructor de clases de envoltura directamente, tales como 'nuevo entero (42)'. En su lugar, llame al método de fábrica valueOf , como Integer.valueOf (42). Esto normalmente usar menos memoria debido enteros comunes tales como 0 y 1 compartirán una única instancia " Entero iInteger = Integer.valueOf (IINT);. – user3439968

+0

Creo que esto se hace de forma automática, por lo que podría tener como' somethink Integer iInteger = iInt; 'y debería funcionar. –

1

Tuve un problema similar. Para ello se puede utilizar un Hashmap que tiene "cadena" y "objeto" como se muestra en el código de abajo:

/** stores the image database icons */ 
public static int[] imageIconDatabase = { R.drawable.ball, 
     R.drawable.catmouse, R.drawable.cube, R.drawable.fresh, 
     R.drawable.guitar, R.drawable.orange, R.drawable.teapot, 
     R.drawable.india, R.drawable.thailand, R.drawable.netherlands, 
     R.drawable.srilanka, R.drawable.pakistan, 

}; 
private void initializeImageList() { 
    // TODO Auto-generated method stub 
    for (int i = 0; i < imageIconDatabase.length; i++) { 
     map = new HashMap<String, Object>(); 

     map.put("Name", imageNameDatabase[i]); 
     map.put("Icon", imageIconDatabase[i]); 
    } 

}

+0

gracias Vicky, creo que mi problema se resolverá con sus soluciones ... – user643144

+0

gr8 si le sirve –

-2

i es número entero, int a entero

Integer intObj = new Integer(i); 

añadir a colección

list.add(String.valueOf(intObj)); 
+1

Cuando intenta responder una pregunta que ya está siendo respondida. Agregue más información a la respuesta para que agregue valor. – Vishnu667

6

Como se ha mencionado, una forma es utilizar

new Integer(my_int_value) 

Pero no debe llamar al constructor de clases contenedoras directamente

Por lo tanto, modificar el código en consecuencia:

mBitmapCache.put(Integer.valueof(R.drawable.bg1),object); 
+1

¿Existe alguna razón por la cual "no se deba llamar directamente al constructor para las clases contenedoras"? –

+0

En realidad, no es solo una suposición de que el desarrollador no tuvo ganas de crear nuevas objeto en cada llamada. Raramente el caso: Utilizaría un nuevo entero() si desea distinguir varios objetos enteros. Principalmente el caso: está utilizando Integer y no int solo porque también desea tener el valor * null *. Integer.valueOf() le devolverá el mismo objeto en varias llamadas en un escenario particular, lo que ahorrará memoria (nunca ocurre lo mismo con el nuevo Integer()). – Evusas