2011-03-10 11 views
5

मुझे पता है कि 212 ArrayList ArrayList<ArrayList<E>> के साथ बनाना संभव है, लेकिन यह बोझिल और वास्तविक कास्टिंग दुःस्वप्न है जब वस्तुओं को जोड़ने और पुनर्प्राप्त करने की बात आती है।जावा के लिए कोई कुशल 2 डी ArrayList कक्षाएं हैं?

क्या कोई 2 डी अरेरेलिस्ट कक्षाएं हैं जो इस तरह की चीज को अधिक कुशलता से करती हैं? मैं जमीन से एक सच्ची 2 डी ऐरेलिस्ट वर्ग लिख रहा हूं, और मुझे आश्चर्य है कि क्या कोई और है जिसने इस तरह की चीज को कुशल तरीके से किया है।

+0

आपको और अधिक दक्षता की आवश्यकता क्या है? सामान्य रूप से – jjnguy

+0

क्षमता। छद्म 2 डी ArrayList कक्षाएं हैं जो लिंक्डलिस्ट, नेस्टेड ऐरेलिस्ट, या केवल सादा बहु-आयामी सरणी का उपयोग करती हैं, जो बेहद अक्षम गति और स्मृति-वार हो सकती हैं। "अन्य विकल्प" के लिए –

उत्तर

4

नहीं, दुर्भाग्यवश 2 डी ArrayList कक्षा नहीं है। अपने विकल्प विकल्प हैं (मामले में Diamension की 0/1/2 स्थिर है):

MyType[][] myList = new MyType[n][m]; 

या

ArrayList<MyType>[] myList = new ArrayList<MyType>[n]; 

या

ArrayList<ArrayList<MyType>> myList = new ArrayList<ArrayList<MyType>>(); 

एक और विकल्प आपके सभी डेटा को बचाने के लिए है 1 डी ArrayList में और एक समारोह बनाएँ जो प्राप्त (x, y) प्राप्त करें और जगह x को ArrayList में वापस कर दें। इस तरह आप 2 डी सरणी के बाहर प्रदर्शन करते हैं, लेकिन आसानी से तत्वों को 1 डी ArrayList

+0

+1 –

1

"ArrayList>" प्रकार का उपयोग करना इस तरह की चीज़ के लिए ठीक और सुंदर मानक है जो मैंने देखा है। आप आसानी से 2 डी सरणी सूची कक्षा लिख ​​सकते हैं जो वस्तुओं को जोड़ने/हटाने के लिए सुविधा विधियां प्रदान करता है, और यह इसका उपयोग करने के लिए "बोझिल" या "कास्टिंग दुःस्वप्न" से बहुत दूर होगा। एक उदाहरण के रूप में this कार्यान्वयन पर एक नज़र डालें। यह बिल्कुल सही नहीं है लेकिन यह दर्शाता है कि इस तरह के दृष्टिकोण का उपयोग करना कितना आसान है।

0

Google संग्रह में एक तालिका संग्रह है। इसे पंक्तियों/कोल्स और एक्सेसिबल सीधे, बाइकल और पंक्तियों के रूप में रखा गया है। अगर यह किसी भी मदद है तालिका के विभिन्न कार्यान्वयन पहुंच प्रकार

1

के आधार पर अलग अलग क्षमता है, javolution में FastTable पर एक नज़र और अमरूद

0

मैं एक 3 डी "ग्रिड" डेटा संरचना का निर्माण में Table कार्यान्वयन है।

कुंजी चाल उप विभाजित है "ब्लॉक" इतना है कि विरल डेटा कुशलतापूर्वक संग्रहित किया जा सकता में अंतरिक्ष।

यदि आप ज़ेड आयाम को अनदेखा करके (0 पर रखते हुए) को अनदेखा करके इसे 2 डी संग्रह के रूप में उपयोग कर सकते हैं, हालांकि यह संभवतः ओवरकिल का थोड़ा सा है। फिर भी, यदि आप इस तरह की संरचना चाहते हैं तो एक विकल्प। वैकल्पिक रूप से, आप इसे 2 डी तक सरल बना सकते हैं।

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