我有这种情况,我有两组数据之间的父子关系。我有一个父文档集合和一个子文档集合。要求是父母及其相应的孩子需要出口到一个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)。 –