मैं एक मैपिंग उपयोगिता पर काम कर रहा हूं जिसके लिए सीएसवी प्रारूप में ऐप में इनपुट करने के लिए मध्यम मात्रा में डेटा की आवश्यकता होती है। इन CSV फ़ाइलों में लगभग 50 आइटम वाले प्रत्येक रिकॉर्ड के साथ 100000+ रिकॉर्ड हो सकते हैं। मुझे इनमें से कई फाइलें एक बार में खोलनी पड़ सकती हैं। डेटा को दोहरी सटीकता की आवश्यकता होती है, लेकिन रिकॉर्ड में प्रत्येक आइटम के साथ नहीं। इन वस्तुओं को इंट में डाला जा सकता है या टूस्ट्रिंग कहा जा सकता है।

मेरा प्रश्न यह है: मेरा पहला विचार डबल [] का ऐरेलिस्ट बनाना था। मेरा दूसरा विचार इस डेटा को उन रूपों में रखने के लिए एक कस्टम डेटा ऑब्जेक्ट (MyDataClass का एक ArrayList) बनाना था, जिसकी मुझे आवश्यकता है। यह मुझे लगभग 45-50 आवृत्ति चर के साथ एक वर्ग बना देगा। मैंने इस पैमाने पर कभी कुछ नहीं किया है और इस तरह के कार्य के लिए सर्वोत्तम अभ्यास पर थोड़ा मार्गदर्शन कर सकता हूं!

0
The Ox 9 नवम्बर 2011, 00:41
1
आपका क्या मतलब है "ऐप में इनपुट करें"? डेटाबेस में आयात किया गया? तब आपको सब कुछ स्मृति में रखने की आवश्यकता नहीं है।
 – 
Kent
9 नवम्बर 2011, 00:53
CSV फ़ाइल को डेटा संरचना (मेमोरी) में पढ़ना। डेटाबेस वास्तव में अभी तक एक विकल्प नहीं है।
 – 
The Ox
9 नवम्बर 2011, 00:57

1 उत्तर

सबसे बढ़िया उत्तर

दोनों अप्रोच ठीक हैं। यह सब इस बात पर निर्भर करता है कि आप डेटा के साथ क्या करेंगे। यदि यह केवल डेटा है और इसमें गेटर्स को छोड़कर कोई विधि नहीं है, तो उन्हें पकड़ने के लिए कक्षा बनाना अधिक हो सकता है। यदि आप किसी पंक्ति में कुछ व्यवहार जोड़ना चाहते हैं, तो एक वर्ग बनाएँ। एक अद्वितीय वर्ग में 50 फ़ील्ड थोड़ा अधिक है। आप कक्षा को तार्किक समूहों में विभाजित कर सकते हैं, लेकिन यह सब इस बात पर निर्भर करता है कि डेटा क्या दर्शाता है।

अगर हम मान लें कि आपके पास 10 फाइलें खुली हैं, प्रत्येक में 100000 * 50 डबल्स हैं, जो लगभग 380 एमबी बनाती हैं। आपको युगल के प्रत्येक सरणी के लिए और ArrayLists के लिए स्मृति जोड़नी होगी। स्मृति की इतनी मात्रा बहुत अधिक हो सकती है, या ठीक भी हो सकती है। यह सब आपके जेवीएम में मौजूद मेमोरी पर निर्भर करता है। यदि आप सब कुछ स्मृति में नहीं रख सकते हैं, तो आवश्यकतानुसार फ़ाइलों को पढ़ने पर विचार करें, या डेटा को डेटाबेस में संग्रहीत करें।

0
JB Nizet 9 नवम्बर 2011, 00:56
अच्छा सौदा। हां, कुछ ऐसे व्यवहार हैं जिन्हें मैं मॉडल करना चाहता हूं (एकत्रीकरण, अनुपालन, आदि) मैं वास्तव में इसे तार्किक टुकड़ों में तोड़ने के आपके विचार को पसंद करता हूं। एक खंड ट्रैक की मैपिंग के लिए है, दूसरा सिग्नल की गुणवत्ता की मैपिंग के लिए है, दूसरा सामान्य जानकारी के लिए है, इसलिए यह एक अच्छा सुझाव है!
 – 
The Ox
9 नवम्बर 2011, 01:01