1. 使用技术点
位运算
2. 保存
{"methods":[1,2]}
public enum MethodEnum {
METHOD1(1, "东"),
METHOD2(2,"南"),
METHOD3(4,"西"),
METHOD4(8,"北");
private Integer code;
private String name;
MethodEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
public Integer getCode() {
return code;
}
public String getName() {
return name;
}
public static MethodEnum getByCode(Integer code) {
if (code == null) {
return null;
}
for (MethodEnum p : values()) {
if (code.equals(p.getCode())) {
return p;
}
}
return null;
}
public static List<Integer> convertToBitList(Integer num){
List<Integer> enumList = new ArrayList<>();
for (MethodEnum p : values()) {
int enumCode = p.getCode();
if ((num&enumCode)==(enumCode)) {
enumList.add(enumCode);
}
}
return enumList;
}
}
- 枚举示例代码如下
- 按照位运算定义枚举十进制,分别对应其二进制
- 根据 getByCode()方法校验前端输入的数字是否为枚举列表中的枚举
- 三. 数据转换
Integer sum = list.stream().reduce(Integer::sum).orElse(0);
-将sum数值存入数据库字段中
(1, “东”), //0001 (2,“南”), //0010 (4,“西”), //0100 (8,“北”), //1000 (3, “东"和"南”), //0011 . . 以此类推
3. 查询回显
- 使用枚举中的convertToBitList()方法进行转换,用到的就是位运算(num&enumCode)
输出的就是复选的枚举编码的列表
|