为了账号安全,请及时绑定邮箱和手机立即绑定

使用位掩码将应用程序启用的功能存储到数据库中

使用位掩码将应用程序启用的功能存储到数据库中

饮歌长啸 2021-08-06 09:57:25
我想将很多应用程序功能存储到数据库中。我想为此使用一个表格行,所以我想使用位掩码来存储启用的功能。我试过这个:HashMap<String, Integer> map = new HashMap<String, Integer>();int database_value = 0; public int setFeatureBitmask(int value) {    int bitmask = 0;    bitmask |= value;           return bitmask;}public static Set<String> processFeature(Integer bitmask) {    HashMap<String, Integer> newMap = new HashMap<String, Integer>();    return newMap.entrySet().stream().filter(e -> (e.getValue() & bitmask) == e.getValue()).map(e -> e.getKey())            .collect(Collectors.toSet());}@BeforeAllpublic void setupData() {    System.out.println("Populating settings map");    map.put("Type1", 1);    map.put("Type2", 2);    map.put("Type3", 4);    map.put("Type4", 8);    map.put("Type5", 16);    map.put("Type6", 32);    map.put("Type7", 64);    map.put("Type8", 128);    map.put("Type9", 256);    map.put("Type10", 512);    map.put("Type11", 1024);    map.put("Type12", 2048);    map.put("Type13", 4096);    map.put("Type14", 8192);    map.put("Type15", 16384);    map.put("Type16", 32768);    map.put("Type17", 65536);    map.put("Type18", 131072);    map.put("Type19", 262144);}@Testpublic void writeData() {    System.out.println("Converting Map using bitmasking");    for(int i=0; i<map.size(); i++) {        int number_value = map.get(i);                              int result = setFeatureBitmask(number_value);                   database_value = database_value + result;    }       }@AfterAllpublic void databaseInsert() {    System.out.println("Final resut to insert into Database " + database_value);    System.out.println("Converting back values from database");    // read here values from database_value variable and convert them into hash     }第一个问题是例如如何将转换后的数字存储为一个大表值15990793?我应该将所有转换后的数字组合成一个大数字吗?而且在我转换它们之后如何再次翻译它们以便我可以使用它们?有没有工作的例子?我发现了许多位掩码示例,但没有像我的案例那样完整。完全不清楚如何获得工作结果你能建议吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信