मुझे ArrayList के साथ कोई समस्या है। मैं इस तरह ArrayList उपयोग कर रहा हूँ:ArrayList indexOf() गलत इंडेक्स देता है?
private ArrayList<Playlist> mPlaylists;
जहां प्लेलिस्ट एक वर्ग एक और ArrayList से विरासत में मिली है। मैं निम्न कार्य करें:
p = new Playlist(...some parameters...);
mPlaylists.add(p);
बाद में जब मैंने 'पी' का उपयोग सूची में सूचकांक पाने के लिए:
int index = mPlaylists.indexOf(p);
'1' के एक सूचकांक दिया जाता है, यहां तक कि के निरीक्षण हालांकि सूची स्पष्ट रूप से दिखाती है कि यह सूचकांक '4' है।
क्या कोई जानता है कि यह क्यों विफल रहता है? धन्यवाद।
बीआर। मोर्टेन
संपादित करें: indexOf() के बिना एक ही समस्या है, का उपयोग करते हुए बराबरी():
private int GetIndex(Playlist playlist) {
for (int i = 0; i < mPlaylists.size(); i++) {
if (mPlaylists.get(i).equals(playlist)) {
return i;
}
}
return -1;
}
न्यू संपादित करें: यह काम करता है !:
private int getIndex(Playlist playlist) {
for (int i = 0; i < mPlaylists.size(); i++) {
if (mPlaylists.get(i) == playlist) {
return i;
}
}
return -1;
}
समाधान: जैसा कि सुझाव दिया गया है, मैंने प्लेलिस्ट क्लास को एन्हर नहीं किया यह ArrayList से, बल्कि एक उदाहरण निजी रूप से रखते हुए। यह पता चला कि मुझे केवल 4 ArrayList तरीकों को लागू करना पड़ा था।
यह चाल है; अब indexOf() सही ऑब्जेक्ट देता है!
सभी योगदानकर्ताओं के लिए धन्यवाद!
mPlaylists.get पर क्या है (1); ? क्या आपने 'प्लेलिस्ट' में 'बराबर() 'ओवरराइड किया है - वहां कुछ भी मज़ाकिया है? –
क्या प्लेलिस्ट ArrayList के indexOf ओवरराइड करता है? –
मेरी प्रारंभिक प्रतिक्रिया यह है कि "आपके पास पी नहीं है जो आप सोचते हैं" उसके बाद "एक पी सोचता है कि यह एक और पी है (या यह नहीं जानता कि यह स्वयं क्या है)"। –