Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何遍历具有依赖关系的权限组树_Java_Tree_Dependencies_Graph Theory - Fatal编程技术网

Java 如何遍历具有依赖关系的权限组树

Java 如何遍历具有依赖关系的权限组树,java,tree,dependencies,graph-theory,Java,Tree,Dependencies,Graph Theory,我正在使用Java编写一个简单的用户权限系统,其中权限定义为短字符串(例如,权限“REBOOT”允许用户重新启动)。如果需要,可以将每个用户分配到多个组(例如,他们可能是VIP和主持人) 作为一个简单的示例,只包含几个组: - Administrators Inherits from: Moderators, VIP Permissions: ["REBOOT", "PERMA_BAN"] - Moderators Inherits from: Default Permissions: ["T

我正在使用Java编写一个简单的用户权限系统,其中权限定义为短字符串(例如,权限“REBOOT”允许用户重新启动)。如果需要,可以将每个用户分配到多个组(例如,他们可能是VIP和主持人)

作为一个简单的示例,只包含几个组:

- Administrators
Inherits from: Moderators, VIP
Permissions: ["REBOOT", "PERMA_BAN"]

- Moderators
Inherits from: Default
Permissions: ["TEMP_BAN", "KICK"]

- VIP
Inherits from: Default
Permissions: ["NO_POST_LIMIT"]

- Default
Inherits from: *None*
Permissions: ["POST", "PRIVATE_MESSAGE"]
管理员显式地拥有来自版主和VIP的权限,隐式地拥有来自默认值的权限(因为版主/VIP都是从默认值继承的)。这意味着,当代码解析其所有权限字符串时,权限列表中每个组的所有权限都将存在。版主只有默认权限,但没有VIP权限,因为他们只继承默认权限。。。因此,他们将只拥有组的权限和默认权限

这可以通过图形表示(其中边表示依赖项):

如何在Java中创建此图并按正确顺序加载组,以便在加载组时继承/依赖项可用

在本例中,默认值首先加载,因为它没有依赖项,然后是版主和VIP,因为他们只需要默认值,最后是管理员,因为它需要加载所有其他3个组?

Check.Check。