在布尔数组中设置位的随机索引(Java)

时间:2013-08-27 12:43:49

标签: java bitset

过去几天我一直在寻找这个东西,并且遇到了最推荐使用“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 []等,但是无法成功。

我知道概念部分缺少一些愚蠢的东西,但是如果你们能帮助我的话会非常感激。

1 个答案:

答案 0 :(得分:2)

您的问题中的代码片段似乎位于循环内,该循环遍历key变量的多个值,期望您在当前迭代之前设置的所有位在当前迭代期间可用通过循环。

要解决此问题,您需要在进入循环之前创建BitSet对象,并继续重复使用它,而不是每次通过if语句时都创建它。 / p>

移动此行

BitSet bitSet1 = new BitSet(256);

在您的代码段中隐含的循环之外,或者将其作为类中的变量来解决问题。