2

在Java程序中,我得到一些数据,每个值都被分配了一个名称-每个数据项都有一个“级别”,它是一个数值。

对于级别 1,有“n”个值——数据项有名称

 1-1, 1-2, 1-3.....1-n.

现在,第 2 级项目的名称源自第 1 级的数据项目。

因此,可以有 2 级的“m”值,对应于每个 1 级项目。在每个数据项的名称中,每个已命名的节对应一个级别,与名称的其他节之间用“~”分隔。

例如,

    1-1~2-1, 1-1~2-2, 1-1~2-3......1-1~2-m --->level2 corresp. to level 1 item "1-1"
    1-2~2-1, 1-2~2-2, 1-2~2-3, ....1-2~2-m--->level2 corresp. to level 1 item "1-2"

现在,我想创建一个函数,其中参数是级别数,并且我想以编程方式访问该级别的所有项目。

例如,我可以在另一个 for 循环中创建一个 for 循环,以访问级别 2 的项目。

但是对于 level=x,我如何做到这一点,其中 x 是一个变量?

4

3 回答 3

7

最简单的方法是使用递归和循环。

public static int count(List list) {
  int sum = 0;
  for(Object o: list) {
     sum += o instanceof List ? count((List) o) : 1;
  }
  return sum;
}

如您所见,这将遍历每个级别的每个元素。

于 2012-06-15T11:37:34.680 回答
2

如果我正确理解您的要求,那么您的结构对我来说似乎非常像一棵树。

您有一个值层次结构,每个值都是给定级别的“节点”,每个节点可以有多个子节点,可以有多个子节点......

我将为这些值创建一个树状结构并递归处理它们。

这有帮助吗?我可以尝试进一步解释我的意思。

于 2012-06-15T11:36:45.887 回答
2

您可以尝试递归地解决这个问题,而不是迭代地。

于 2012-06-15T11:37:18.940 回答