【发布时间】:2017-05-30 01:01:46
【问题描述】:
我是 Java 新手,我正在制作一个多级控制台菜单。我有一个Item class,它有一个ArrayList,它可以包含另一个具有自己的项目数组列表的项目等等。
public Item(String key, String name, ArrayList<Item> itemList) {
this.key = key;
this.name = name;
this.itemList = itemList;
}
我需要对所有数组中的每个Item 执行info()(或任何其他方法)(无论我们可以拥有多少个带有 Item 对象的嵌套数组)。我只写了一些糟糕的、不通用的代码执行方法,只有 3 级菜单......
public void show() {
for (int i = 0; i != list.size(); i++) {
System.out.println(list.get(i).info());
if (!list.get(i).getItemList().isEmpty()) {
for (int j = 0; j < list.get(i).getItemList().size(); j++) {
System.out.println(list.get(i).getItemList().get(j).info());
if (!list.get(i).getItemList().get(j).getItemList().isEmpty()) {
for (int y = 0; y < list.get(i).getItemList().get(j).getItemList().size(); y++) {
System.out.println(list.get(i).getItemList().get(j).getItemList().get(y).info());
}
}
}
}
}
}
结果如下:
1. Section one.
1.1. Sub-Section one.
1.1.1. Sub-Sub-Section one.
如果我们不知道菜单深度,是否有任何通用的方法来循环所有项目?
【问题讨论】:
标签: java loops recursion arraylist menu