前言:通常用作用户权限控制,比如增、删、改、查四种权限,可以用编码表示增-1、删-2、改-4、查-8,那么全部权限对应的是15,查+增对应的是9,这样我们在数据表中存储就可以使用数字来表是用户拥有的权限,返回前端是再将权限进行拆分即可
通用代码
/**
* 拆分数字(将数字拆分为可组成其本身的2的N方的数字)
* 例:9 = [8, 1], 6 = [4, 2]
*
* @param number 需要拆分数字
* @return 拆分结果
*/
public List<Integer> split(Integer number) {
String[] split = Integer.toBinaryString(number).split("");
int length = split.length;
return IntStream.range(0, length)
.map(i -> Integer.parseInt(split[i]) * (1 << (length - i - 1)))
.filter(code -> code != 0)
.boxed()
.collect(Collectors.toList());
}
/**
* SUM
*
* @param nums 数字
* @return 相加结果
*/
public int sum(JSONArray nums) {
return IntStream.range(0, nums.size()).map(nums::getInteger).sum();
}