2016-07-05 17 views
5

पर डेटा सेट के रूप में जेसनअरे बनाम ऐरेलिस्ट का उपयोग करके मैंने एडाप्टर में डेटा सेट के रूप में ArrayList<> और JsonArray दोनों का उपयोग किया है। मुझे मिले प्रमुख अंतर में से एक यह था कि एडाप्टर में स्थानीय डेटा के लिए डेटा सेट परिवर्तन जेसनएरे के लिए कॉलिंग क्लास में वापस दिखाई नहीं दे रहा था।रीसाइक्लर व्यू एडाप्टर

मैं जानना चाहता था कि कौन सा बेहतर है और मेरा अवलोकन सही है।

यदि मेरे डेटा सेट में एक webservice से डेटा निकालने में शामिल है (जो मुझे जेसन फॉर्म डेटा देता है) तो क्या मैं इसे ArrayList <> में बदल दूंगा।

+0

क्या आप विस्तार से बता सकते हैं, "एडॉप्टर में स्थानीय डेटा के लिए डेटा सेट परिवर्तन जेसनएरे के लिए कॉलिंग क्लास में वापस दिखाई नहीं दे रहा था" का क्या मतलब है? –

+0

हां। मेरे पास मुख्य गतिविधि में डेटा सेट है। मैं उस डेटा को एक फ़ंक्शन का उपयोग करके एडाप्टर क्लास में भेज रहा हूं और फिर डेटाटाट चेंज() को सूचित करता हूं। JsonArray का उपयोग करते समय उस डेटा सेट में किए गए परिवर्तन सिंक्रनाइज़ नहीं होते हैं लेकिन वे ArrayList <> का उपयोग करते समय सिंक्रनाइज़ होते हैं। – Harshit

+0

@ हरशित आपके जेसनएरे में अधिक संरचित डेटा है? – JJ86

उत्तर

4

जेसनअरे हुड के तहत ऐरेलिस्ट द्वारा कार्यान्वित किया गया। http://grepcode.com/file/repo1.maven.org/maven2/org.json/json/20080701/org/json/JSONArray.java

तो ऐप प्रदर्शन के लिए यह बहुत ही समान रूप हैं। आप जो पसंद करते हैं उसका उपयोग करें =)

+0

अभी भी इंडेक्स से किसी आइटम को निकालना प्री लॉलीपॉप संस्करणों के लिए उपलब्ध नहीं है। – Harshit

2

जहाँ तक मुझे पता है कि JsonArrayArrayList से बहुत धीमी नहीं है। तो मेरा मानना ​​है कि आपको JsonArray का उपयोग करना ठीक होना चाहिए। Jsons का उपयोग करते समय समस्या के साथ मदद करने के लिए हमें कुछ कोड देखने की आवश्यकता होगी।

1

जेसनअरे आंतरिक रूप से ऐरेलिस्ट का उपयोग करता है, इसलिए देरी कम है क्योंकि आंतरिक कॉलिंग जावा में तेज़ है।

लेकिन यदि आप जेसनअरे को एररेलिस्ट में परिवर्तित करते हैं और जेसनअरे में अधिक जटिल डेटा होता है तो डेवलपर की आसानी और ऐप के प्रदर्शन के अनुसार ऐरेलिस्ट का उपयोग तेजी से होता है।

1

खैर jsonArray एक तेजी से समाधान तो आप निश्चित रूप से यह अपने डेटा सेट के रूप में सभी तरीके उपलब्ध पाने के लिए उपयोग कर सकते हैं और अभी भी अगर आप सरणी सूची में JsonArray कनवर्ट करना चाहते हैं के लिए यह तो इस जवाब को पढ़ है

https://stackoverflow.com/a/17037364/5476209

आपके मामले में जेसनएरे के साथ जाने के लिए यह ठीक है लेकिन एक अच्छा तरीका है और दृढ़ता से अनुशंसा करने का तरीका है जीएसओएन जब भी आप जेसन के साथ काम करते हैं तो मैं सुनहरा दृष्टिकोण कहूंगा, मैं इसे पसंद करूंगा, यह जवाब देखें।

Google Gson - deserialize list<class> object? (generic type)

1

JSONArray आंतरिक ArrayList उपयोग करता है। यह सिर्फ ArrayList पर रैपर है। तो मैं कहूंगा कि कोई फर्क नहीं पड़ता। JSONObject हैश मैप का उपयोग करता है ताकि फिर कोई वास्तविक कमी न हो।

1

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

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