递归对象设置java

sir*_*ine 2 java recursion

我有一个模型调用部分.此部分有两个字段:颜色和Section对象列表.

public class Section{
    public String color;
    public List<Section> sub_sections;


}
Run Code Online (Sandbox Code Playgroud)

假设我得到一个带有Section对象List的Json feed.在每个Section对象中,是一个设置为随机颜色的颜色字段和另一个Section对象列表.在这些嵌套的Section列表中,颜色字段设置为空字符串.我们不知道有多少嵌套的部分.

如何在嵌套的Sections中设置所有嵌套颜色字符串与第一级部分的颜色相同?我的下面的代码是3级深度的非递归,为您提供问题的想法.

for(Section section : sectionsList){
        for(Section sub : section.sub_sections){
            sub.color=section.color;
            if(sub.sub_sections.size()> 0){
                for(Section sub2 : sub.sub_sections){
                    sub2.color=sub.color;
                    if(sub2.sub_sections.size()> 0){
                        for(Section sub3 : sub2.sub_sections){
                            sub3.color=sub2.color;
                        }
                    }
                }
            }
        }
    } 
Run Code Online (Sandbox Code Playgroud)

Arn*_*ter 5

如果我理解你,这可能是一个解决方案.您需要一个没有参数的公共启动方法和一个获取原始颜色的递归方法.

public class Section{
  public String color;
  public List<Section> sub_sections;

  /** Propagates the current section color to all sub sections. */
  public void propagate() {
    propagate(this.color);
  }

  /** Propagates the passed color to this section and all sub sections recursively. */
  private void propagate(String propagatedColor) {
    color = propagatedColor;
    for (Section sub : sub_sections) {
      sub.propagate(propagatedColor);
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

您的使用代码将如下所示:

for (Section section : sectionsList) {
  section.propagate();
}
Run Code Online (Sandbox Code Playgroud)