java list转树

/**
     * 循环转换
     * @param personList
     * @return
     */
    public static List<Person> listtotree(List<Person> personList){
        List<Person> list = new ArrayList<Person>();
        for (Person per:personList) {
            if(per.getPid()==0) {
                list.add(per);
            }
            for (Person per2 : personList) {
                if (per.getId() == per2.getPid()) {
                    if(per.getPerson()==null){
                        per.setPerson(new ArrayList<Person>());
                    }
                    per.getPerson().add(per2);
                }
            }
        }
        return list;
    }

    /****************************************************************************
     * 递归转换
     * @param personList
     * @return
     */
    public static List<Person> listtotreeDg(List<Person> personList){
        List<Person> list = new ArrayList<Person>();
        for (Person person : personList) {
            if(person.getPid()==0){
                list.add(findChildren(person,personList));
            }
        }
        return list;
    }

    private static Person findChildren(Person person, List<Person> personList) {
        for (Person list : personList) {
            if(person.getId()==list.getPid()){
                if(person.getPerson()==null){
                    person.setPerson(new ArrayList<Person>());
                }
                person.getPerson().add(findChildren(list,personList));
            }
        }
        return person;
    }
    /****************************************************************************/
public class Person{
    private Integer id;
    private Integer pid;
    private String name;
    private List<Person> person;
}

猜你喜欢

转载自blog.csdn.net/qq_39648029/article/details/102586099