我有這種情況,我有兩組數據之間的父子關係。我有一個父文檔集合和一個子文檔集合。要求是父母及其相應的孩子需要出口到一個pdf文檔。一個簡單的實現上述情況可以像(Java上下的僞代碼如下所示)如下:重構嵌套for循環
for(Document parentDocument:Documents){
ExportToPdf(parentDocument);
for(Document childDocument:parentDocument.children()){
AppendToParentPdf(childDocument);
}
}
東西如上面可能會解決這個問題,但一下子要求的變化和現在的每一種父母和他們對應的孩子需要在單獨的PDF文件,所以上面給出的片段是通過改變AppendToParentPdf()
到ExportToPdf()
如下修改:
for(Document parentDocument:Documents){
ExportToPdf(parentDocument);
for(Document childDocument:parentDocument.children()){
ExportToPdf(childDocument);
}
}
沿着這條道路前進,將需要很長時間這個看似微不足道的段之前會遭受一些嚴重的代碼異味。
我的問題,SO是:
是否存在父子關係的更好的表示,如上述的地方,而不是暴力破解我的方式,通過在
O(n^2)
時尚的所有文件和他們的孩子,我可以使用不同的數據結構或技術以更優化的方式遍歷整個結構。在上面描述的場景中,業務規則對於導出pdf的方式非常流暢,是否有更智能的方法來編寫導出函數的性質?導出格式也是暫時的。 PDF可以讓位給* .docs/csvs/xmls等。
這將是很好的一些觀點。
感謝
關於你提到的第一個問題,它並不像你是暴力破解,因爲你只檢索parentDocument.Children規定每位家長和這包含所有的孩子文件特定父的名單。所以你的時間複雜度不是o(n^2),而是o(n + m),其中n和m分別是父文件和子文件的計數。 – Santhosh
@sc_ray你應該說明'childDocument'是否可以有多個'parentDocument'。 – Alderath
@Santosh - 我不知道這是怎麼了O(N + M)的問題,因爲循環需要通過每米兒童n次的迭代,給它O(N * M)或O(n的時間複雜度^ 2)。 –