私はJavaを初めて使い、多レベルのコンソールメニューを作っています。私はItem class
を持っています。これにはArrayList
があり、Itemsの独自のArrayListsを持つ別のItemを含むことができます。マルチレベルメニュー(Java)のArrayLists内のオブジェクトのループ
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());
}
}
}
}
}
}
に...唯一の3レベルのメニューのメソッドを実行するいくつかの悪いと普遍的ではないコードを書いたことの結果は次のようになります。
1. Section one.
1.1. Sub-Section one.
1.1.1. Sub-Sub-Section one.
ループへの普遍的な方法はあり、全てのアイテムメニューの深さがわからない場合は?
'isEmpty'チェックは、空のときにループしないので、実際には必要ありません。 'ItemList'が' null'でもかまいませんが、ヌルチェックがそこにあります。 – n247s
ありがとうございます。あなたは私の多くを助けました:) – blackHorsie