有效地比较位集

dea*_*mon 2 java performance bit-manipulation

我希望将权限存储在一个位集中,以便在Java中有效地比较它们.1表示授予许可,0表示拒绝.如果执行授权,则将所需权限与权限集进行比较.

我的想法是使用AND并将结果与​​请求的权限进行比较.

例:

     0010 1101 Granted Permissions
AND  0000 0101 Requested Permissions
=    0000 0101 Result

if (Result == Requested Permissions)
    allow
else
    deny
Run Code Online (Sandbox Code Playgroud)

这可以更有效或更简单吗?

Joa*_*uer 5

我将专注于"简单"部分,因为我认为这个操作不会成为任何严肃应用程序中的性能瓶颈.

您可以使用BitSet具有所有必要操作的a.

更多OO方法,更容易理解和阅读将代表您的权限enum和使用EnumSet.对于只有少量值的枚举,它将具有高性能BitSet,因为它将使用非常类似的实现.