मेरे पास ऑब्जेक्ट्स की एक सूची है, सूची। एंटीटी क्लास में एक इकाई ऑब्जेक्ट को दूसरे से अलग करने के लिए कुछ विशेषताओं (व्यवसाय नियम) पर एक समान विधि है।ऑब्जेक्ट्स की अक्सर पूछे जाने वाली सूची के लिए सर्वश्रेष्ठ डेटास्ट्रक्चर
List<Entity> noDuplicates = new ArrayList<Entity>();
for(Entity entity: lstEntities)
{
int indexOf = noDuplicates.indexOf(entity);
if(indexOf >= 0)
{
noDuplicates.get(indexOf).merge(entity);
}
else
{
noDuplicates.add(entity);
}
}
अब, समस्या यह है कि मैं देख रहा किया गया है कि कोड के इस हिस्से, धीमी हो रही है है:
काम है कि हम आम तौर पर इस सूची में बाहर ले जाने के इस तरह सभी डुप्लिकेट कुछ निकालना है जैसे ही सूची में 10000 से अधिक वस्तुएं हैं, उतनी ही कम है। मुझे लगता है कि सरणीसूची एओ (एन) खोज कर रही है।
क्या कोई तेज़ विकल्प है, हैश मैप का उपयोग करना एक विकल्प नहीं है, क्योंकि इकाई की विशिष्टता अपने 4 गुणों पर एक साथ बनाई गई है, यह कुंजी को स्वयं मानचित्र में डालने के लिए कठिन होगा? तेजी से पूछताछ में सेट मदद सॉर्ट करेगा?
धन्यवाद
मेरा उत्तर अपडेट किया गया, आशा है कि यह आप के लिए मदद की है। –
अन्य छोटे नोट: अपने 'lstEntities' सामान्य रूप से बहुत बड़ी है, तो आप' कितना बड़ा सूची हो जाएगा पर एक यथोचित बड़े अनुमान के साथ क्या कर 'नई ArrayList (int) पर विचार करना चाहिए। यह आपके 'ArrayList' को हर समय स्मृति को पुन: आवंटित करने से रोक देगा। मेरा मानना है कि 'नया ऐरेलिस्ट()' केवल 32 तत्वों के लिए डिफ़ॉल्ट है, इसलिए यदि आपकी 'नो डुप्लिकेट्स' सूची बड़ी हो तो यह आकार बदलने और प्रतिलिपि बनाने में बहुत कुछ कर रही है। –