В типичном составном шаблоне вам все равно, какой второй лист и т. Д. Вы просто вызовите метод, скажем doSomething(), на составной объект. И это, в свою очередь, вызовет тот же метод для детей. Может быть любое количество типов элементов. Каждый из них будет реализовывать doSomething по-своему. Если вы должны найти 2-й листовой узел, в частности, я могу предложить вам добавить метод, например getChildren(), к элементу. Затем вы можете выполнить итерацию и использовать условие, подобное getChildren(). IsEmpty(), чтобы достичь объектов, которые вы хотите найти.
Это не должно отличаться от обычного дерева. Чтобы найти элемент листа, вы должны проверить, есть ли у узла какие-либо дети. Если вы получаете детей (как «Список»), вы можете использовать 'List.get (index)' –