2011-03-18 3 views
5

क्या जावा में parallel arrays के लिए कोई वास्तविक उपयोग केस है? यह एन एरे बनाए रखने के लिए बहुत बोझिल लगता है जो पारस्परिक हैं।जावा में समांतर सरणी का उपयोग क्यों करें?

उदाहरण:

int ages[] = {0,   17,  2,   52,   25}; 
String names[] = {"None", "Mike", "Billy", "Tom",  "Stan"}; 
int parent[] = {0,   3,   1,   0,   3}; 

मैं सिर्फ एक वर्ग व्यक्ति और एक ही सरणी में दुकान वस्तुओं बना सकते हैं। थोड़ा महंगा होगा, लेकिन सही उपयोग करने में बहुत आसान होगा?

उत्तर

10

समांतर सरणी बेसिक (मूल एक) जैसी भाषाओं से होल्डओवर हैं जिनके पास सरणी के अलावा कोई डेटा संरचना नहीं थी। जैसा कि आप सुझाव देते हैं, आपको वस्तुओं को परिभाषित करना चाहिए।

1

क्लास/ऑब्जेक्ट प्रस्तुति केवल तभी बनाएं यदि आप जो प्रतिनिधित्व करने की कोशिश कर रहे हैं उसे किसी ऑब्जेक्ट के रूप में बेहतर समझाया जा सकता है।

हैश मैप्स एक और समाधान है। उदाहरण के लिए, उम्र और नामों के लिए अलग-अलग सरणी के बजाय, यदि नाम अद्वितीय हैं, तो आप नाम के रूप में कुंजी और आयु के रूप में नाम का उपयोग कर सकते हैं।

+2

मानचित्र समानांतर सरणी के रूप में लगभग खराब हैं। –

+0

@stephan: अच्छी तरह से मैं सहमत हूं, लेकिन कभी-कभी, जब चीजें सरल होती हैं तो मैं नक्शे का उपयोग करना पसंद करता हूं :) – Sujoy

+0

मैं इसे संशोधित करूंगा। कुछ मामलों में, मानचित्र खराब हैं; जैसे वे अनिवार्य रूप से धीमी हैं और समांतर सरणी और पसंदीदा दृष्टिकोण (कस्टम वर्ग) दोनों की तुलना में भूख लगी है। नक्शा दृष्टिकोण के अलावा बोझिल हो जाता है यदि आपके पास सहयोग करने के लिए दो से अधिक गुण हैं ... इस मामले में। –

1

कक्षाएं अच्छी हैं, लेकिन यदि उपयोग का मामला संकीर्ण है, उदा। एक विधि शरीर, यह एक बनाने के लिए अपर्याप्त है। यदि आपके पास Pair वर्ग है, तो आप इसे एक नई कक्षा के बिना उद्देश्य के लिए विशेषज्ञ बना सकते हैं।

11

जावा में समांतर सरणी का एकमात्र वास्तविक लाभ वस्तु आवंटन और/या ढेर के उपयोग को कम करने के लिए एक (आईएमओ चरम) उपाय है। वस्तुओं के बड़े संग्रह के लिए, 3 सरणी कम जगह पर कब्जा कर लेंगे और कुछ कस्टम वर्ग के उदाहरणों की एक सरणी की तुलना में कम वस्तुओं का उपयोग करेंगी।

यह दृष्टिकोण आम तौर पर एक बुरा विचार है, क्योंकि यह आपके कोड को बहुत अधिक नाजुक बनाता है। कस्टम परिस्थितियों का निर्माण और उपयोग करना अधिकांश स्थितियों में सबसे अच्छा तरीका है।

+3

हां, एंड्रॉइड विकास में यह ध्यान में रखना कुछ है। सभी एंड्रॉइड डिवाइस बराबर नहीं हैं, और सामान्य रूप से मोबाइल फोन सीमित संसाधन हैं। एंड्रॉइड डेवलपर्स संदर्भ से प्रदर्शन युक्तियों से उद्धरण के लिए, "यदि आपको एक कंटेनर को लागू करने की आवश्यकता है जो (फू, बार) ऑब्जेक्ट्स के टुपल्स को स्टोर करता है, तो याद रखें कि दो समांतर फू [] और बार [] सरणी आमतौर पर बेहतर होती हैं कस्टम (फू, बार) ऑब्जेक्ट्स की एक सरणी से। "' http://developer.android.com/training/articles/perf-tips.html – loeschg

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