在java中迭代嵌套列表

时间:2012-09-11 11:29:06

标签: java collections for-loop tree

我想在页面中显示树状视图。为此,我将有一个List对象。 List对象将包含更多列表对象。我不知道我会得到多少嵌套级别。所以请告诉我如何浏览列表。

我要显示的示例数据是

  • 教育

    • 数学
      • 三角
    • 科学
      • 物理
        • 核物理学
      • 化学
    • 社会
  • 运动

    • 蟋蟀
    • 脚球
  • 技术
    • 移动
    • 计算机
      • 笔记本
      • PC

2 个答案:

答案 0 :(得分:4)

您需要一个递归方法,如下所示:

void printList(Collection myList) {
   for(Object o : myList) {
      if (Collection.class.isAssignableFrom(o.getClass())) {
          printList((Collection)o);
      }
      else {
          print o;
      }
  }
}

答案 1 :(得分:1)

你应该使用递归函数:

   void display(Object item) {
       print(item);
       if (item instanceof List) 
           for (Object itemInList: (List) list) {
               display(itemInList);
           }
       }
   }

如有必要,您可以使用级别来缩进,例如:

   void printItem(Object item, int level) {
       for (int i=0; i<level; i++) System.out.print(" ");
       System.out.println(item);
   }

   void display(List list, int level) {
       printItem(list, level);
       if (item instanceof List) 
           for (Object itemInList: (List) list) {
               display(itemInList, level+1);
           }
       }
   }

   display(topLevelList, 0);