循环遍历数组列出Java

时间:2015-02-23 15:23:55

标签: java arraylist hashmap hierarchy

我正在阅读excel表中的项目列表。每个项目名称都具有从同一列表中定义的父项目名称(作为单独的列)。因此,这形成了一个树层次结构,其中一个项目是同一列表中另一个项目的父项,并且父项也有多个子项。 项目名称在整个列表中不是唯一的。 项目仅在特定父项下是唯一的。

从输入文件读取时生成每个项目的Id。 现在我想为每个项目获取其父项的Id。

对于从文件中读取的当前记录,父项可以出现在我们尚未读取的行下面,因此我们不知道其父项的id。

当我想到一个逻辑时,它会导致重复循环遍历数组列表和hashmap键集来获取它。

我需要帮助以获得更好的逻辑来解决这个问题。提前谢谢!

编辑1:

现在我在定义Excel工作表本身的结构时遇到了问题。我需要它是用户友好的。当名称不唯一时,如何为项记录定义父项?我是否应该强制用户在层次结构顺序中提供excel,以便我可以轻松识别子项的父项?

2 个答案:

答案 0 :(得分:1)

您可以使用简单的

HashMap<Parent, List<Child>>允许使用每个父键存储多个值 - 只需根据需要将子项附加到键控列表中。或者,考虑使用MultiMap来保存数据。

答案 1 :(得分:0)

您只需阅读一次项目并创建(名称,ID)的HashMap 然后再次迭代这些项并分配父ID,从HashMap中获取它 通过这种方式,您将在项列表上仅迭代2次,这将使其时间复杂度为O(n)。

但是,如果您没有唯一的名称,那么如果您只有项目的父母姓名,那么您可能无法找到项目的唯一父母。< / p>

相关问题