Bucle a través del auto Lista

NoobLord1234:

Tengo esta clase de persona que tiene una lista de persona (s). ¿Cómo hacer que bucle a través de personas y comprobar si cada uno en el interior del objeto que tiene una lista de persona (s) y si cada objeto que tiene en el interior una lista y así sucesivamente y así sucesivamente? Todo lo que puedo pensar es bastante limitante en cuanto a la forma anidada se pone. Puedo escribir un bucle recursivo, pero que me llega al primer nivel profundo, pero no sabe cómo conseguir x niveles de profundidad con la recursividad. Estoy seguro de que alguien ha llegado al otro lado de este problema en el pasado y que no debería ser tan difícil, pero yo sólo no puedo envolver mi cabeza alrededor de ella. Cualquiera y todas las ideas son bienvenidas!

public class Person {
    // other fields removed for simplicity
    private long id;
    private List<Person> persons;

    public List<Person> getPersons() {
        return debates;
    }
}

// essentially I am looking for a way to make this unlimited level nested looping
private void loopPersons() {
    Person person = new Person();

    if(person.getPersons() != null && !person.getPersons().isEmpty()) {
        for(Person person1 : person.getPersons()) {
            if(person1.getPersons() != null && !person1.getPersons().isEmpty()) {
                System.out.println(person1.getId());

                for(Person person2 : person1.getPersons()) {
                    if(person2.getPersons() != null && !person2.getPersons().isEmpty()) {
                        System.out.println(person2.getId());
                    }
                }
            }
        }
    }
}

ACTUALIZACIÓN: La respuesta de Brian en este otro post (por desplazamiento) es esencialmente lo que hace. iterar a través de objetos recursivos

Arvind Kumar Avinash:

Hacerlo de la siguiente manera:

import java.util.List;

class Person {
    // other fields removed for simplicity
    private long id;
    private List<Person> persons;

    public Person(long id, List<Person> persons) {
        this.id = id;
        this.persons = persons;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public void setPersons(List<Person> persons) {
        this.persons = persons;
    }

    public List<Person> getPersons() {
        return persons;
    }

    @Override
    public String toString() {
        return "Person [id=" + id + ", persons=" + persons + "]";
    }

    public void showAll() {
        if (getPersons() == null || getPersons().isEmpty()) {
            return;
        }
        getPersons().get(0).showAll();
        System.out.println(getPersons());
    }
}

Manifestación:

public class Main {
    public static void main(String[] args) {
        Person p1 = new Person(1,List.of(new Person(11, List.of(new Person(111, List.of(new Person(1111, null))),
                                                                new Person(112, List.of(new Person(1121, null))),
                                                                new Person(113, List.of(new Person(1131, null))))),
                                        new Person(12, List.of(new Person(121, List.of(new Person(1211, null))))),
                                        new Person(13, List.of(new Person(131, List.of(new Person(1311, null)))))));
        p1.showAll();
    }
}

Salida:

[Person [id=1111, persons=null]]
[Person [id=111, persons=[Person [id=1111, persons=null]]], Person [id=112, persons=[Person [id=1121, persons=null]]], Person [id=113, persons=[Person [id=1131, persons=null]]]]
[Person [id=11, persons=[Person [id=111, persons=[Person [id=1111, persons=null]]], Person [id=112, persons=[Person [id=1121, persons=null]]], Person [id=113, persons=[Person [id=1131, persons=null]]]]], Person [id=12, persons=[Person [id=121, persons=[Person [id=1211, persons=null]]]]], Person [id=13, persons=[Person [id=131, persons=[Person [id=1311, persons=null]]]]]]

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=355696&siteId=1
Recomendado
Clasificación