【发布时间】:2015-02-23 15:23:54
【问题描述】:
我正在阅读 Excel 工作表中的项目列表。每个项目名称都有一个从同一列表定义的父项目名称(作为单独的列)。因此,这形成了一个树层次结构,其中一个项目是同一列表中另一个项目的父项,并且父项也有多个子项。 项目名称在整个列表中不是唯一的。 项仅在特定父项下是唯一的。
每个项目的 ID 是在从输入文件中读取时生成的。 现在我想为每个项目获取其父项目的 ID。
对于从文件中读取的当前记录,父项可以出现在我们尚未读取的行的下方,因此我们不知道其父项的 id。
当我想到一个逻辑时,它会导致循环遍历数组列表和 hashmap 键集以获取它。
我需要帮助以获得更好的逻辑来解决这个问题。提前致谢!
编辑 1:
现在我在定义 Excel 工作表本身的结构时遇到了问题。我需要它对用户友好。当名称不唯一时,如何为项目记录定义父项?我是否应该强制用户在层次结构顺序中提供 excel,以便我可以轻松识别子项的父项?
【问题讨论】:
-
请提供一些示例数据,以便更容易回答您的问题。同时显示相关代码sn-ps。
-
如果“项目名称在整个列表中不是唯一的”,您如何消除对多次出现的项目名称的引用?也就是说,假设一条名为“foo”的记录有父“bar”,我们找到两条名为“bar”的记录——一条为父“baz”,一条为父“bam”。我们如何知道哪个“bar”是“foo”的父级?
-
@wdf:我没选那个!抱歉,我必须更改 Excel 工作表的结构。
-
在解析电子表格时,您肯定需要一种方法来明确识别每个项目的父项。我需要有关此数据的含义/用法的更多详细信息,以便对此处的最佳用户体验发表意见,但可以肯定的是,要求电子表格中的条目排序以反映父子关系听起来是一个合理的选择(.. .假设您不能只要求所有名称都是唯一的,这将是最简单的方法)。
标签: java arraylist hashmap hierarchy