मैं एक मैपिंग उपयोगिता पर काम कर रहा हूं जिसके लिए सीएसवी प्रारूप में ऐप में इनपुट करने के लिए मध्यम मात्रा में डेटा की आवश्यकता होती है। इन CSV फ़ाइलों में लगभग 50 आइटम वाले प्रत्येक रिकॉर्ड के साथ 100000+ रिकॉर्ड हो सकते हैं। मुझे इनमें से कई फाइलें एक बार में खोलनी पड़ सकती हैं। डेटा को दोहरी सटीकता की आवश्यकता होती है, लेकिन रिकॉर्ड में प्रत्येक आइटम के साथ नहीं। इन वस्तुओं को इंट में डाला जा सकता है या टूस्ट्रिंग कहा जा सकता है।
मेरा प्रश्न यह है: मेरा पहला विचार डबल [] का ऐरेलिस्ट बनाना था। मेरा दूसरा विचार इस डेटा को उन रूपों में रखने के लिए एक कस्टम डेटा ऑब्जेक्ट (MyDataClass का एक ArrayList) बनाना था, जिसकी मुझे आवश्यकता है। यह मुझे लगभग 45-50 आवृत्ति चर के साथ एक वर्ग बना देगा। मैंने इस पैमाने पर कभी कुछ नहीं किया है और इस तरह के कार्य के लिए सर्वोत्तम अभ्यास पर थोड़ा मार्गदर्शन कर सकता हूं!
1 उत्तर
दोनों अप्रोच ठीक हैं। यह सब इस बात पर निर्भर करता है कि आप डेटा के साथ क्या करेंगे। यदि यह केवल डेटा है और इसमें गेटर्स को छोड़कर कोई विधि नहीं है, तो उन्हें पकड़ने के लिए कक्षा बनाना अधिक हो सकता है। यदि आप किसी पंक्ति में कुछ व्यवहार जोड़ना चाहते हैं, तो एक वर्ग बनाएँ। एक अद्वितीय वर्ग में 50 फ़ील्ड थोड़ा अधिक है। आप कक्षा को तार्किक समूहों में विभाजित कर सकते हैं, लेकिन यह सब इस बात पर निर्भर करता है कि डेटा क्या दर्शाता है।
अगर हम मान लें कि आपके पास 10 फाइलें खुली हैं, प्रत्येक में 100000 * 50 डबल्स हैं, जो लगभग 380 एमबी बनाती हैं। आपको युगल के प्रत्येक सरणी के लिए और ArrayLists के लिए स्मृति जोड़नी होगी। स्मृति की इतनी मात्रा बहुत अधिक हो सकती है, या ठीक भी हो सकती है। यह सब आपके जेवीएम में मौजूद मेमोरी पर निर्भर करता है। यदि आप सब कुछ स्मृति में नहीं रख सकते हैं, तो आवश्यकतानुसार फ़ाइलों को पढ़ने पर विचार करें, या डेटा को डेटाबेस में संग्रहीत करें।
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।