У меня есть такой метод, где я использую рекурсию с потоками:
private static List<Member> convertToFlatList(List<Member> memberList)
{
return memberList.stream().flatMap(i -> Stream.concat(Stream.of(i), convertToFlatList(i.getChildren()).stream())).collect(Collectors.toList());
}
Допустим, у класса Member
есть дочерний список членов, который всегда инициализируется пустым списком. Здесь я делаю преобразование иерархического списка членов в плоский список. Я понимаю эту часть. Я не понимаю, как здесь работает рекурсия.
В рекурсии он прекращается, когда выполняются определенные условия. Но здесь я не даю никаких условий для прекращения намеренно. Так как же здесь работает завершающая часть?