2016-04-21 2 views
0

I имеет следующих различных типовВложенных для циклов итерации альтернатив

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

They have the following relationship. 

Tree Structure

Для заданного списка элементов я хочу перебрать каждый лист и выполнить некоторые действия. Прямо сейчас у меня есть петля 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 карты и списки уже древовидная структура. Вы можете пройти их. –

Смежные вопросы