मैं जावा में ईवेंट की स्ट्रीम पर एक स्लाइडिंग विंडो को कार्यान्वित कर रहा हूं। तो मैं एक डेटा संरचना जो मेरा पीछा करने की अनुमति देता हैं:क्या कोई जावा पुस्तकालय एक यादृच्छिक पहुंच कतार कार्यान्वयन प्रदान करता है?
जब नए ईवेंट के होने पर डेटा संरचना के अंत में जोड़ने;
पुराने ईवेंट संसाधित होने पर डेटा संरचना की शुरुआत से हटा दें;
डेटा संरचना के तत्वों के लिए मानक यादृच्छिक पहुंच (
size()
,get(i)
) प्राप्त करें; सामान्य रूप से, सामान्य List "पढ़ा" संचालन;उपरोक्त सभी कार्यों के लिए कुशल है;
असंबद्ध है।
कोई अन्य एक्सेस आवश्यक नहीं है। और कोई थ्रेड सुरक्षा की आवश्यकता नहीं है।
मैं वर्तमान में चीजों को चलाने और चलाने के लिए ArrayList के साथ ऐसा कर रहा हूं। लेकिन मुझे कुछ और कुशल चाहिए; remove(0)
विधि (2. ऊपर) ArrayList
के साथ अक्षम है।
संख्या 1. और 2. मानक Queue -स्टाइल संचालन हैं। हालांकि, JDK (जैसे ArrayDeque के रूप में) में Queue
के कार्यान्वयन अगर वहाँ किसी भी पुस्तकालयों इस प्रकार का कार्यान्वयन है जो कर रहे हैं, और कर रहे हैं 3.
तो में get(i)
के लिए अनुमति नहीं देते, मैं सोच रहा हूँ वाणिज्यिक उपयोग के लिए उपयुक्त है।
यदि नहीं, तो मुझे लगता है कि मैं अपने खुद के लेखन का सहारा होगा ...
कैसे अपेक्षाकृत लगातार इन आपरेशनों कर रहे हैं? आपको समय के लिए कुछ गंभीर स्थान व्यापार करना पड़ सकता है - उदा। आप तेजी से पुनर्प्राप्ति के लिए एक सूचकांक के साथ एक सामान्य रूप से लिंक्ड सूची का उपयोग कर सकते हैं (सूचकांक: मैं इस संरचना के लिए नाम भूल जाता हूं; पॉइंटर्स का एक बाइनरी पेड़ 0 और एन/2, जिनमें से प्रत्येक पॉइंटर्स को उनके आधे के मध्य बिंदु पर स्टोर करता है।)। –