作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个表User
和Roles
,具有一对一关系,如下所示。
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/
我是一名优秀的程序员,十分优秀!