Я новичок в Java, и я создаю многоуровневое консольное меню. У меня есть Item class
, который имеет ArrayList
, который может содержать другие элементы с собственными ArrayLists элементов и т. Д.Loop объектов в ArrayLists многоуровневого меню (Java)
public Item(String key, String name, ArrayList<Item> itemList) {
this.key = key;
this.name = name;
this.itemList = itemList;
}
мне нужно сделать 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.
Есть ли универсальный способ цикла все товары если мы не знаем глубину меню?
Проверка 'isEmpty' на самом деле не нужна, поскольку она просто не будет зацикливаться, когда она будет пустой. Хотя если 'ItemList' может быть« null », там будет нуль-проверка. – n247s
Спасибо. Ты мне очень помог :) – blackHorsie