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

R.drawable.bg1 एक int है पूर्णांक कन्वर्ट करने के लिए ... लेकिन मैं Integer में परिवर्तित करने क्योंकि Hashmap एक Integer लेता चाहते हैं ... और जब सेकंड में एक से अधिक ऑब्जेक्ट आकर्षित, यह एक पूर्णांक वस्तु क्रम बनाता जो कोड के प्रदर्शन को प्रभावित करता है ...कैसे पूर्णांक तक

उत्तर

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

"आप इस तरह के रूप आवरण वर्गों सीधे, के लिए निर्माता नहीं बुलाना चाहिए 'नया इंटीजर (42)'। इसके बजाय, valueOf फ़ैक्टरी विधि, जैसे Integer.valueOf (42) को कॉल करें। यह आम तौर पर कम स्मृति का उपयोग करेगा क्योंकि इस तरह 0 और 1 के रूप में आम पूर्णांकों एक उदाहरण साझा करेंगे " पूर्णांक iInteger = Integer.valueOf (iInt);। – user3439968

+0

मुझे लगता है कि यह स्वचालित रूप से किया जाता है, इस प्रकार आप की तरह somethink हो सकता था' इंटीजर iInteger = iInt; 'और यह काम करना चाहिए। –

1

मुझे एक ही समस्या थी। मैं इसे पूर्णांक, पूर्णांक पूर्णांक

को
Integer intObj = new Integer(i); 

में जोड़ने

/** 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

धन्यवाद विकी मुझे लगता है कि मेरी समस्या आपके समाधान से हल हो जाएगी ... – user643144

+0

gr8 यदि यह आपके लिए काम करता है। –

-2

: इसके लिए आप के रूप में नीचे दिए गए कोड में दिखाया गया है एक hashmap "स्ट्रिंग" और "वस्तु" जो लेता है का उपयोग कर सकते संग्रह

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

जब आप किसी ऐसे प्रश्न का उत्तर देने का प्रयास कर रहे हैं जिसका पहले से ही उत्तर दिया जा रहा है। उत्तर में अधिक जानकारी जोड़ें ताकि यह मूल्य जोड़ सके। – Vishnu667

6

के रूप में उल्लेख किया है, एक तरह से उपयोग करने के लिए है

0,123,
new Integer(my_int_value) 

लेकिन आप आवरण वर्गों के लिए निर्माता सीधे

तो नहीं बुलाना चाहिए, उसके अनुसार कोड को संशोधित:

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

क्या कोई कारण है "आपको सीधे रैपर वर्गों के लिए कन्स्ट्रक्टर को कॉल नहीं करना चाहिए"? –

+0

वास्तव में नहीं - यह केवल एक अनुमान है कि देव को नया बनाने का आग्रह नहीं था प्रत्येक कॉल पर ऑब्जेक्ट। शायद ही मामला: यदि आप कई इंटीजर ऑब्जेक्ट्स को अलग करना चाहते हैं तो आप नए इंटीजर() का उपयोग करेंगे। अधिकतर मामले: आप इंटीजर का उपयोग कर रहे हैं और int नहीं क्योंकि आप * शून्य * मान भी प्राप्त करना चाहते हैं। Integer.valueOf() आपको विशेष परिदृश्य में एकाधिक कॉल पर एक ही ऑब्जेक्ट लौटाएगा, जो स्मृति को सहेज लेगा (कभी भी नए इंटीजर() के साथ मामला नहीं)। – Evusas

संबंधित मुद्दे