मेरे पास यह स्थिति है जहां मेरे डेटा के दो सेट के बीच एक मूल शिशु संबंध है। मेरे पास एक मूल दस्तावेज़ संग्रह और एक बाल दस्तावेज़ संग्रह है। आवश्यकता यह है कि माता-पिता और उनके संबंधित बच्चों को 'ए' पीडीएफ दस्तावेज में निर्यात करने की आवश्यकता है।लूप के लिए नेस्टेड रीफैक्टरिंग
for(Document parentDocument:Documents){
ExportToPdf(parentDocument);
for(Document childDocument:parentDocument.children()){
AppendToParentPdf(childDocument);
}
}
कुछ के रूप में ऊपर शायद समस्या का समाधान होगा, लेकिन अचानक आवश्यकताओं में परिवर्तन और के सभी अब इनमें से प्रत्येक: उपरोक्त स्थिति का एक सरल-कार्यान्वयन के रूप में इस प्रकार है (जावा-ish छद्म कोड के नीचे) हो सकता है तो ऊपर दिए गए टुकड़ा बदलते ExportToPdf()
को AppendToParentPdf()
इस प्रकार से संशोधित किया गया है माता पिता और उनके इसी बच्चों, अलग pdfs में होना चाहिए:
for(Document parentDocument:Documents){
ExportToPdf(parentDocument);
for(Document childDocument:parentDocument.children()){
ExportToPdf(childDocument);
}
}
इस रास्ते में जा रहे हैं, यह लंबे समय के लिए इस प्रतीत होता है तुच्छ स्निपेट के पहले नहीं ले जाएगा होगा कुछ गंभीर कोड गंध से पीड़ित हैं।
मेरे सवालों का इतना कर रहे हैं:
इस तरह के ऊपर के रूप में अभिभावक-बच्चे रिश्तों के बेहतर निरूपण कर रहे हैं, जहां के बजाय जानवर-मजबूर कर सभी दस्तावेजों और एक
O(n^2)
फैशन में अपने बच्चों के माध्यम से अपने रास्ते, मैं पूरी संरचना को अधिक इष्टतम फैशन में पार करने के लिए एक अलग डेटा-संरचना या तकनीक का उपयोग कर सकता हूं।परिदृश्य में मैंने ऊपर वर्णित परिदृश्य में, जहां व्यापार नियमों को पीडीएफ निर्यात के तरीके के बारे में तरल पदार्थ है, क्या निर्यात समारोह की प्रकृति को कोड करने का एक बेहतर तरीका है? निर्यात प्रारूप भी क्षणिक है। पीडीएफ * .docs/csvs/xmls et al को रास्ता दे सकता है।
इस पर कुछ परिप्रेक्ष्य प्राप्त करना बहुत अच्छा होगा।
धन्यवाद
अपने पहले प्रश्न का सवाल है, यह देखने के लिए नहीं है की तरह आप के लिए मजबूर जानवर हैं, क्योंकि आप केवल हर माता पिता के लिए parentDocument.Children पुन: प्राप्त करने कर रहे हैं और यह एक विशेष माता-पिता के लिए सभी बच्चों के दस्तावेजों की सूची में शामिल है। तो आपकी समय जटिलता ओ (एन^2) नहीं बल्कि ओ (एन + एम) है जहां एन और एम क्रमशः माता-पिता और बाल दस्तावेजों की गिनती हैं। – Santhosh
@sc_ray आपको यह अवश्य बता देना चाहिए कि 'childDocument' के लिए एक से अधिक 'parentDocument' होना संभव है या नहीं। – Alderath
@ सैंटोश - मुझे यकीन नहीं है कि यह ओ (एन + एम) समस्या है क्योंकि लूप को प्रत्येक एम बच्चों के माध्यम से बार-बार फिर से भरने की ज़रूरत होती है, जिससे यह ओ (एन * एम) या ओ (एन) की समय जटिलता देता है।^2)। –