gpt4 book ai didi

java - 多级菜单ArrayLists中对象的循环(Java)

转载 作者:行者123 更新时间:2023-11-30 07:56:59 25 4
gpt4 key购买 nike

我是 Java 的新手,我正在制作一个多级控制台菜单。我有一个 Item class,它有一个 ArrayList,它可以包含另一个 Items 和自己的 ArrayLists of Items 等等。

public Item(String key, String name, ArrayList<Item> itemList) {
this.key = key;
this.name = name;
this.itemList = itemList;
}

我需要对所有数组中的每个 Item 执行 info()(或任何其他方法)(无论我们可以拥有多少个带有 Item 对象的嵌套数组) .我只写了一些糟糕的、不通用的三级菜单代码执行方法...

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.

如果我们不知道菜单深度,是否有任何通用的方法来循环所有项目?

最佳答案

你需要recursive programming .

不会撒谎,我不是 Java 程序员,但这是我的尝试:


public void show(List<Item> list) {
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).info());

if (!list.get(i).getItemList().isEmpty()) {
show(list.get(i).getItemList());
}
}
}

或者使用 for-each:


public void show(List<Item> list) {
for (Item item : list) {
System.out.println(item.info());

if(!item.getItemList().isEmpty()) {
show(item.getItemList());
}
}
}

这基本上循环遍历您的初始列表,然后打印信息。如果它包含另一个项目列表,则将该子项目列表传回给它自己。然后它将循环遍历您已经过去的那个列表,并继续下去,直到没有更多的子项目列表。

关于java - 多级菜单ArrayLists中对象的循环(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41655235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com