gpt4 book ai didi

java - 在java中遍历列表的列表

转载 作者:行者123 更新时间:2023-12-02 11:55:54 24 4
gpt4 key购买 nike

我有两个表UserRoles,具有一对一关系,如下所示。

User
_________________________________________
| Id | user_name | full_name | creator |
_________________________________________
| 1 | a | A | a |
| 2 | b | B | a |
| 3 | c | C | a |
| 4 | d | D | c |
| 5 | e | E | c |
| 6 | f | F | e |
| 7 | g | G | e |
| 8 | h | H | e |
| 9 | i | I | e |
|10 | j | J | i |
_________________________________________

Roles
_______________________________________
| id | user_mgmt | others | user_id |
_______________________________________
| 1 | 1 | 1 | 1 |
| 2 | 0 | 1 | 2 |
| 3 | 1 | 0 | 3 |
| 4 | 0 | 1 | 4 |
| 5 | 1 | 1 | 5 |
| 6 | 0 | 1 | 6 |
| 7 | 0 | 0 | 7 |
| 8 | 0 | 0 | 8 |
| 9 | 1 | 0 | 9 |
________________________________________

Roles 表具有 boolean 列,因此如果 User 具有 user_mgmt 角色,他可以添加许多用户(一个用户可以添加多少个用户并不确定)。我想获取由用户及其子用户创建的所有用户(a是父级,c是a的子级,e是c的子级..)。

这是我获取用户的代码

public void loadUsers(){
List<Users> users = new ArrayList<>();

String creator = user.getUserName();
List<Users> createdUsers = userService.getUsersByCreator(creator);
for(Users user : createdUsers) {
Roles role = createdUsers.getRoles();
if(role.isEmpMgnt()){
users.add(user);
loadUsers();
}
}
}

这给了我一个堆栈溢出错误。如果我不递归调用 loadUsers() 它只会返回一个子结果。那么有什么解决办法吗?感谢您提前提供的任何帮助。

最佳答案

这会给您带来堆栈溢出错误,因为a有创建者a。所以用户 a 就有无限循环。对于a,您应该将创建者设置为null或跳过代码中的自引用。此外,您还应该将当前用户传递到 loadUsers() 方法中,并仅读取由它创建的用户。喜欢

public void loadUsers(String creator)

并且仅处理由该创建者创建的用户。在这里

String creator = user.getUserName();

什么是用户?你应该使用创建者。问题是如何获得初始创建者。也许初始创建者应该是用户,其中创建者为空。

关于java - 在java中遍历列表的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com