2014-07-14 12 views
6

तो मैं Neo4j एपीआई के साथ काफी बड़े पैमाने पर काम कर रहा है, और मैं देखा है कि लगभग हमेशा वे कार्य जो लौटसूची, सेट, संग्रह के बजाय Iterable <String> वापस कब करें?

Iterable<Class> 

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

मैं इन्हें इटरटेबल पसंद करता हूं क्योंकि उनके पास उपयोगी उपयोगिताएं हैं जैसे .contains(), .add() आदि। मुझे पता चला है कि अक्सर मुझे एक संग्रह में एक इटेबल को परिवर्तित करने के लिए कोड लिखना होता है।

तो मेरा सवाल है: क्या मुझे कुछ महत्वपूर्ण याद आ रही है? संग्रह पर Iterable का उपयोग करने के लिए एक अच्छा कारण है? आप ऐसा कब करेंगे? जाहिर है, नियो 4j के लोग पहली दर प्रोग्रामर प्रतीत होते हैं, इसलिए मुझे लगता है कि उनके पास इसका कारण है, लेकिन मैं इसे नहीं देख सकता।

उत्तर

8

यह बस इतना कह रहा है कि वे आपको फिर से शुरू करने के लिए कुछ दे रहे हैं। वे कवर के तहत लागू किए गए कार्यों के बारे में कोई वादा नहीं कर रहे हैं।

विशेष रूप से, इसके पीछे एक वास्तविक संग्रह वर्ग नहीं हो सकता है। तत्वों का आकलन किया जा सकता है और/या आप उनके ऊपर पुनरावृत्ति के रूप में आलसी हो सकते हैं (कल्पना करें कि आप 100 एम तत्वों का संग्रह कैसे कर सकते हैं)। उस स्थिति में, आप बेहतर रूप से सभी तत्वों को एक संग्रहित संग्रह में एकत्रित करने के लिए सावधान रहेंगे, क्योंकि यह काफी आकार देने वाला है।

चूंकि Neo4J एक ग्राफ डेटाबेस है, जो समझ में आता है। यह एक जेडीबीसी ResultSet के समान है, जिसमें आपको परिणामों का संग्रह नहीं मिलता है, बल्कि पंक्ति-दर-पंक्ति, और यदि आप वास्तव में सभी परिणामों को पकड़ना चाहते हैं, तो आपको स्पष्ट रूप से स्वयं संग्रह बनाना होगा।

+1

हाँ, यह ज्यादातर परिणामों के आलसी मूल्यांकन के बारे में है। संग्रह कक्षाएं सभी उत्सुक हैं। असल में इटेरेबल एक 'इंटरएटर' के लिए सिंटैक्टिक चीनी है जो एक थैलेर के भीतर एकल इटरेटर का उपयोग करने की अनुमति देता है –

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