Cómo convertir int a entero

4 minutos de lectura

avatar de usuario de user643144
usuario643144

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 dibuja los múltiples objetos en segundos, crea un tiempo de ejecución de Objeto Integer que afecta el rendimiento del código…

Avatar de usuario de Olegas
Olegas

int iInt = 10;
Integer iInteger = Integer.valueOf(iInt);

PS Respuesta editada debido a comentarios que señalan un problema con la solución sugerida inicial.

  • “No debe llamar directamente al constructor para las clases contenedoras, comonew Integer(42). En su lugar, llame al método valueOf factory, como Integer.valueOf(42). Esto generalmente usará menos memoria porque los enteros comunes como 0 y 1 compartirán una sola instancia”. Integer iInteger = Integer.valueOf(iInt);

    – usuario3439968

    3 oct 2015 a las 15:01


  • Creo que esto se hace automáticamente, por lo que podrías tener algo como Integer iInteger = iInt; y debería funcionar.

    – Ionut Negru

    22/09/2016 a las 13:34

  • Solo quería compartir stackoverflow.com/q/3131136/384674 para “No debe llamar al constructor…”

    – Betlista

    15 de diciembre de 2018 a las 20:14

  • Solo por curiosidad, es Integer value = (Integer) intValue; una mala practica? ¿O no se recomienda para la conversión de int a Integer?

    – Simón Z.

    20 de marzo de 2019 a las 1:32

  • @ChaitanyaKarmarkar, absolutamente eso no es una mala práctica. Lo dije porque, en la edición anterior, usó new Integer(int);. Pero, siento que cuando hay un método que se proporciona dedicado a un propósito, siempre tiene más sentido usar el método en su lugar. Siento que siempre funciona para ser más eficiente de esa manera (en general, no siendo específico para la conversión de enteros).

    – Simran Sharma

    17 de abril de 2021 a las 12:47


Avatar de usuario de Morphing Coffee
Café Morphing

Como se mencionó, una forma es usar

int original = 32;
Integer converted = new Integer(original);

Pero no debe llamar directamente al constructor para las clases contenedoras. Es una mala práctica hacerlo. En su lugar, utilice los métodos predefinidos especialmente para este fin.

Entonces, el nuevo código se vería así (recomendado):

mBitmapCache.put(Integer.valueOf(R.drawable.bg1), object);

  • ¿Hay alguna razón por la que “no debe llamar directamente al constructor para las clases contenedoras”?

    –Jacob Holloway

    25 de abril de 2017 a las 22:56


  • Realmente no, es solo una suposición de que el desarrollador no tenía la necesidad de crear un nuevo objeto en cada llamada. Rara vez es el caso: usaría new Integer() si desea distinguir varios objetos Integer. Principalmente el caso: está utilizando Integer y no int solo porque también quiere tener nulo valor. Integer.valueOf() le devolvería el mismo objeto en múltiples llamadas en un escenario particular, lo que ahorrará memoria (nunca es el caso con new Integer()).

    – Café Morphing

    26 de abril de 2017 a las 0:14

  • Solo quería compartir stackoverflow.com/q/3131136/384674 para “No debe llamar al constructor…”

    – Betlista

    15 de diciembre de 2018 a las 20:14

Tuve un problema similar . Para esto, puede usar un Hashmap que toma “cadena” y “objeto” como se muestra en el código a continuación:

/** 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]);
    }

}

Una de las formas es usando lo siguiente
Integer obj = new Integer(primitiveValue)

o en tu caso new Integer(R.drawable.bg1). El único problema con esto es que crearía objetos innecesariamente durante el tiempo de ejecución.

Si está utilizando JDK 5 o superior, puede ejercer el poder de Autoboxing.
Dejemos eso a un lado por un tiempo.

Dentro de la clase Integer (java.lang.Integer) tenemos muchos métodos, uno de los cuales es:
static Integer valueOf(int) devuelve el valor de un int como un entero.

entonces un Integer.valueOf(R.drawable.bg1) podría funcionar.

Avatar de usuario de IvanT
ivant

i es entero, int a entero

Integer intObj = new Integer(i);

añadir a la colección

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

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

    – Vishnu667

    21 de enero de 2017 a las 19:49


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

    – Vishnu667

    21 de enero de 2017 a las 19:49


¿Ha sido útil esta solución?