मैं वस्तुओं, जिनमें से प्रत्येक एक एक्स है और y मूल्य समन्वय, ऐसा है कि मैं जल्दी से एक निश्चित भीतर सभी वस्तुओं प्राप्त कर सकते हैं का एक सेट को संग्रहीत करने का तेज़ तरीका निर्धारित करने के लिए कोशिश कर रहा हूँ आयताकार या सर्कल। ऑब्जेक्ट्स के छोटे सेट (~ 100) के लिए उन्हें सूची में संग्रहित करने का मूर्ख दृष्टिकोण, और इसके माध्यम से पुनरावृत्ति, अपेक्षाकृत तेज़ है। हालांकि, बहुत बड़े समूहों के लिए, यह अपेक्षाकृत धीमी है। मैं उन्हें ट्री-मैप की एक जोड़ी में भंडारण के रूप में अच्छी तरह की कोशिश की है, एक पर एक्स अनुसार क्रमबद्ध समन्वय, और एक y पर छाँटे गए समन्वय, इस कोड का उपयोग:एक्स से पता लगाने के लिए वस्तुओं भंडारण, वाई निर्देशांक
xSubset = objectsByX.subSet(minX, maxX);
ySubset = objectsByY.subSet(minY, maxY);
result.addAll(xSubset);
result.retainAll(ySubset);
यह भी काम करता है, और बड़े के लिए तेजी से होता है वस्तुओं के सेट, लेकिन मैं अभी भी धीमा है जितना मैं चाहता हूँ। समस्या का एक हिस्सा यह भी है कि ये वस्तुएं घूमती हैं, और इस भंडारण में वापस डालने की आवश्यकता होती है, जिसका अर्थ है उन्हें उन्हें हटाने और पेड़/सूचियों में दोबारा जोड़ना। मैं मदद नहीं कर सकता लेकिन लगता है कि वहाँ बेहतर समाधान होना चाहिए। मैं जावा में इसे कार्यान्वित कर रहा हूं, अगर इससे कोई फर्क पड़ता है, हालांकि मुझे उम्मीद है कि कोई समाधान उपयोगी पैटर्न/एल्गोरिदम के रूप में अधिक होगा।
ओह, बहुत धीमी गति से ... –