javaで下位階層のすべてのchildrenidを取得する方法を教えてください。

Javaでは再帰を利用することで、下位すべてのchildren IDを取得できます。サンプルコードを以下に示します。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map<Integer, List<Integer>> childrenMap = new HashMap<>();
        childrenMap.put(1, List.of(2, 3));
        childrenMap.put(2, List.of(4, 5));
        childrenMap.put(3, List.of(6, 7));

        List<Integer> childrenIds = getChildrenIds(childrenMap, 1);
        System.out.println(childrenIds);
    }

    public static List<Integer> getChildrenIds(Map<Integer, List<Integer>> childrenMap, int parentId) {
        List<Integer> childrenIds = new ArrayList<>();
        List<Integer> children = childrenMap.get(parentId);

        if (children != null) {
            for (int childId : children) {
                childrenIds.add(childId);
                childrenIds.addAll(getChildrenIds(childrenMap, childId));
            }
        }

        return childrenIds;
    }
}

上記の例では、親と子関係を表すMap<Integer, List>を使用しています。getChildrenIdsメソッドは、再帰的に下位の子供IDをすべて取得する方法を使用しています。各イテレーションにおいて、現在の子供IDを結果のリストに加え、その子供の下位のIDを取得するために再帰関数を呼び続けます。最終的に、すべての子供IDのリストを返します。

サンプルでは、childrenMapを使用して以下の関係を表しています。

  1. 1階に2階と3階
  2. 子ノード2には子ノード4と5があります。
  3. 子3の子に6と7がある

1の子IDが2、4、5、3、6、7であったことを示し、出力が[2, 4, 5, 3, 6, 7]となる。

bannerAds