So konvertieren Sie int in Integer

Lesezeit: 4 Minuten

Benutzeravatar von user643144
Benutzer643144

private static HashMap<Integer, Bitmap> mBitmapCache;         
mBitmapCache.put(R.drawable.bg1,object);                       

R.drawable.bg1 ist ein int … aber ich möchte konvertieren in Integer Weil Hashmap dauert ein Integer… und wenn mehrere Objekte in Sekunden gezeichnet werden, wird eine Integer-Objekt-Laufzeit erstellt, die sich auf die Leistung des Codes auswirkt …

Benutzeravatar von Olegas
Oleg

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

PS Antwort bearbeitet aufgrund von Kommentaren, die auf ein Problem mit dem ursprünglichen Lösungsvorschlag hinweisen.

  • “Sie sollten den Konstruktor für Wrapper-Klassen nicht direkt aufrufen, wie znew Integer(42). Rufen Sie stattdessen die valueOf-Factory-Methode auf, z. B. Integer.valueOf(42). Dies verbraucht normalerweise weniger Speicher, da gemeinsame Ganzzahlen wie 0 und 1 eine einzige Instanz teilen.“ Integer iInteger = Integer.valueOf(iInt);

    – Benutzer3439968

    3. Oktober 2015 um 15:01 Uhr


  • Ich denke, das wird automatisch gemacht, also könntest du so etwas haben Integer iInteger = iInt; und es sollte funktionieren.

    – Ionut Negru

    22. September 2016 um 13:34 Uhr

  • Ich wollte nur stackoverflow.com/q/3131136/384674 für “Sie sollten Konstruktor nicht aufrufen …” teilen.

    – Betliste

    15. Dezember 2018 um 20:14 Uhr

  • Nur aus Neugier, ist Integer value = (Integer) intValue; eine schlechte praxis? Oder wird es nicht für die Konvertierung von int nach Integer empfohlen?

    – Simon z.

    20. März 2019 um 1:32 Uhr

  • @ChaitanyaKarmarkar, das ist absolut keine schlechte Praxis. Ich habe es gesagt, weil er in der vorherigen Bearbeitung verwendet hat new Integer(int);. Aber ich denke, wenn es eine Methode gibt, die nur für einen bestimmten Zweck bereitgestellt wird, ist es immer sinnvoller, stattdessen die Methode zu verwenden. Ich habe das Gefühl, dass es auf diese Weise immer effizienter ist (im Allgemeinen nicht spezifisch für Integer-Casting).

    – Simran Sharma

    17. April 2021 um 12:47 Uhr


Benutzeravatar von Morphing Coffee
Verwandelnder Kaffee

Wie bereits erwähnt, ist eine Möglichkeit die Verwendung

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

Aber Sie sollten den Konstruktor für Wrapper-Klassen nicht direkt aufrufen. Es ist eine schlechte Praxis, dies zu tun. Verwenden Sie stattdessen die speziell dafür vordefinierten Methoden.

Der neue Code würde also so aussehen (empfohlen):

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

  • Gibt es einen Grund, warum “Sie den Konstruktor für Wrapper-Klassen nicht direkt aufrufen sollten”?

    – Jacob Holloway

    25. April 2017 um 22:56 Uhr


  • Nicht wirklich – es ist nur eine Vermutung, dass der Entwickler nicht den Drang hatte, bei jedem Aufruf ein neues Objekt zu erstellen. Seltener Fall: Sie würden new Integer() verwenden, wenn Sie mehrere Integer-Objekte unterscheiden möchten. Meistens gilt: Du verwendest Integer und nicht int, nur weil du das auch haben willst Null Wert. Integer.valueOf() würde Ihnen in einem bestimmten Szenario bei mehreren Aufrufen dasselbe Objekt zurückgeben, wodurch Speicher gespart wird (bei new Integer() nie der Fall).

    – Morphing-Kaffee

    26. April 2017 um 0:14 Uhr

  • Ich wollte nur stackoverflow.com/q/3131136/384674 für “Sie sollten Konstruktor nicht aufrufen …” teilen.

    – Betliste

    15. Dezember 2018 um 20:14 Uhr

Ich hatte ein ähnliches Problem. Dazu können Sie eine Hashmap verwenden, die “string” und “object” akzeptiert, wie im folgenden Code gezeigt:

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

}

Einer der Wege ist die Verwendung von following
Integer obj = new Integer(primitiveValue)

oder in deinem fall new Integer(R.drawable.bg1). Das einzige Problem dabei ist, dass zur Laufzeit unnötigerweise ein Objekt erstellt würde.

Wenn Sie JDK 5 oder höher verwenden, können Sie Autoboxing nutzen.
Lassen wir das eine Weile beiseite.

Innerhalb der Klasse Integer (java.lang.Integer) haben wir viele Methoden, von denen eine folgende ist:
static Integer valueOf(int) es gibt den Wert eines int als Integer zurück.

Also ein Integer.valueOf(R.drawable.bg1) könnte klappen.

Benutzeravatar von IvanT
Ivan T

i it Integer, int zu Integer

Integer intObj = new Integer(i);

zur Sammlung hinzufügen

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

  • Wenn Sie versuchen, eine Frage zu beantworten, die bereits beantwortet wurde. Fügen Sie der Antwort weitere Informationen hinzu, damit sie einen Mehrwert bietet.

    – Vishnu667

    21. Januar 2017 um 19:49 Uhr


  • Wenn Sie versuchen, eine Frage zu beantworten, die bereits beantwortet wurde. Fügen Sie der Antwort weitere Informationen hinzu, damit sie einen Mehrwert bietet.

    – Vishnu667

    21. Januar 2017 um 19:49 Uhr


1431670cookie-checkSo konvertieren Sie int in Integer

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy