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);
}
}
}
出力を削除する方法:recuresively
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]
問題:
私は、ユーザーが持っているユーザリストを持って、ユーザリストでユーザが他のユーザリストを持つことができますが、私はユーザリストで利用可能な後続のユーザーを削除したいです。私は再帰的にユーザーオブジェクトを削除しようとしている、子オブジェクトオブジェクトは、同じ再帰呼び出しで親を削除する方法、正常に削除されます。
ありがとうOldCurmudgeon、この再帰は私の期待通りに働いています。 – ravi