过去几天我一直在寻找这个东西,并且遇到了最推荐使用“BitSet方法”的解决方案。 我试着设置bit的索引并使用get方法显示它。
这是我的代码:
int value = (myMap.get(key)); // value could be anything from 0-255
if (items.contains(key)) {
BitSet bitSet1 = new BitSet(256);
bitSet1.set(value);
System.out.print(bitSet1);
for (int i5 = 1; i5 < bitSet1.size(); i5++) {
boolean bit = bitSet1.get(i5);
System.out.print(bit?1:0);
}
}
问题是:根据用户操作,可能有0-255之间的任何值,例如:40,85,93
我想在布尔数组中设置相应的位索引。上面的代码确实将相应的位索引设置为“1”,但如果索引大于1,则使用相应的位打印相同数量的布尔数组。
我想在同一个布尔数组中将位索引打印为“1”(根据“value”中的整数索引)。
我也玩过arraylist,int []等,但是无法成功。
我知道概念部分缺少一些愚蠢的东西,但是如果你们能帮助我的话会非常感激。
答案 0 :(得分:2)
您的问题中的代码片段似乎位于循环内,该循环遍历key
变量的多个值,期望您在当前迭代之前设置的所有位在当前迭代期间可用通过循环。
要解决此问题,您需要在进入循环之前创建BitSet
对象,并继续重复使用它,而不是每次通过if
语句时都创建它。 / p>
移动此行
BitSet bitSet1 = new BitSet(256);
在您的代码段中隐含的循环之外,或者将其作为类中的变量来解决问题。