2016-04-21 6 views
0

I持って、次の異なるタイプの私はそれぞれの葉の上に反復して、いくつかのアクションを実行したい項目の特定のリストについては ループの反復選択肢を入れ子

Tree Structure

Types: 
R -> R1, R2, R3.... 
RE -> RE1, RE2, RE3.... 
REA -> REA1, REA2, REA3... 

They have the following relationship. 

。 今、私は3つのレベルにネストされたforループを持っています。

for (r in Rs) { 
List<RE> REs = get(R); 
for(re in REs) { 
    List<REA> REAs = get(re); 
    for(rea in REAs) { 
    //do some processing for the list of items 
    for(each item in items) { 
     //process each item 
    } 
    } 
} 
} 

この繰り返しの方が良い方法はありますか?

答えて

1
あなたはどの言語を使用します

わからないが、あなたは地元の人々のすべてのリストを格納しないことにより、そのスニペットを短縮することができます:

for (r in Rs) { 
    for (re in get(r)) { 
    for (rea in get(re)) { 
     for (item in rea) { 
     //process each item 
     } 
    } 
    } 
} 

それとも、再帰的に行くことができます:

traverse(items) { 
    if (items.isLeaf()) { 
     // process items 
    } else { 
     for (item in items) { 
      traverse(item); 
     } 
    } 
} 
traverse(Rs) 
+0

ので、私はする必要がありますまずツリー構造を構築しますか?今私はマップとリストにそれらを保存しています。 – Bharath

+0

@Bharathの地図とリストは既に木構造です。それらをトラバースすることができます。 –