2

Java プログラムで、各値に名前が割り当てられたデータを取得しています。各データ項目には、数値である「レベル」があります。

レベル 1 の場合、「n」個の値があります。データ項目には名前があります。

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

現在、レベル 2 の項目には、レベル 1 のデータ項目から派生した名前が付けられています。

したがって、レベル 1 の各項目に対応するレベル 2 の「m」個の値が存在する可能性があります。各データ項目の名前では、レベルに対応する各名前付きセクションは、名前の他のセクションから「~」で区切られます。

たとえば、

    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"

ここで、パラメーターがレベル数である関数を作成し、そのレベルのすべてのアイテムにプログラムでアクセスしたいと考えています。

たとえば、レベル 2 のアイテムにアクセスするために、別の for ループ内に for ループを作成できます。

しかし、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:37:18.940 に答える
2

あなたが求めていることを正しく理解できれば、あなたの構造は私には木のように見えます。

値の階層があり、各値は特定のレベルの「ノード」であり、各ノードは複数のサブノードを持つことができ、複数のサブノードを持つことができます...

値のツリーのような構造を作成し、それらを再帰的に処理します。

これは役に立ちますか?私が言いたいことをさらに説明しようとすることができます。

于 2012-06-15T11:36:45.887 に答える