2787184
2787184

Reputation: 3881

How to delete recuresively

 class User{
    String name;
    List<User> userList;
    public User(String name) {
        super();
        this.name = name;
    }
    public List<User> getUserList() {
        return userList;
    }
    public void setUserList(List<User> userList) {
        this.userList = userList;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", userList=" + userList + "]";
    }
    public void deleteUser(User user){
        user=null;
    }
}
public class TempTest {
    public static void main(String[] args) {
        User mainUser=new User("Main");
        List<User> aUserList=new ArrayList<User>();
        User e=new User("D");
        aUserList.add(e);

        List<User> mainUserList=new ArrayList<User>();
        User a=new User("A");
        a.setUserList(aUserList);
        User b=new User("B");
        User c=new User("C");
        mainUserList.add(a);
        mainUserList.add(b);
        mainUserList.add(c);
        mainUser.setUserList(mainUserList);
        System.out.println(mainUser);
        deleteUserRecursively(mainUser);
    }

    public static void deleteUserRecursively(User mainUser){
        List<User> userList=mainUser.getUserList();
        if(null!=userList){
            for(User user:userList){
                deleteUserRecursively(user);
            }
        }else{
            mainUser.deleteUser(mainUser);
            System.out.println("User Delete "+mainUser);
        }
    }
}

output:

User [name=Main, userList=[User [name=A, userList=[User [name=D, userList=null]]], User [name=B, userList=null], User [name=C, userList=null]]]
User Delete User [name=D, userList=null]
User Delete User [name=B, userList=null]
User Delete User [name=C, userList=null]

Problem:

I have user and has userList, user in the userList can have another userList, i want to delete subsequent users available in userlist. I am trying to delete user object recursively, child object objects are deleted successfully, how to delete parent in same recursion call.

Upvotes: 2

Views: 58

Answers (2)

OldCurmudgeon
OldCurmudgeon

Reputation: 65811

The more OOp way would be to make the User do the deletion.

class User {
    ...
    public void deleteUserRecursively() {
        if (userList != null) {
            for (User user : userList) {
                user.deleteUserRecursively();
            }
        }
    }
}

Upvotes: 1

JonahCui
JonahCui

Reputation: 145

Try to add filed "parent" in user class. As follows:

class User{
    String name;
    String parent;
    List<User> userList;
    public User(String name) {
        super();
        this.name = name;
    }
    public User(String name,User user){
        super();
        this.name = name;
        this.parent = user;
    }

Upvotes: 0

Related Questions