如何使位集不简化[JAVA]

如何使位集不简化[JAVA],java,bit,bitset,Java,Bit,Bitset,我用位集表示可能的上课时间,当你把角位置为false时,它们被简化了,这意味着它们不再在位集中。我如何才能要求位集不简化 为了让我的解释更清楚,代码如下: for(Map.Entry<GrupAssig, BitSet> entry : bitsetPerGrup.entrySet()){ BitSet bitset = entry.getValue(); //n franges per dia int

我用位集表示可能的上课时间,当你把角位置为false时,它们被简化了,这意味着它们不再在位集中。我如何才能要求位集不简化

为了让我的解释更清楚,代码如下:

   for(Map.Entry<GrupAssig, BitSet> entry : bitsetPerGrup.entrySet()){

            BitSet bitset = entry.getValue();

            //n franges per dia
            int numFranges = UnitatDocent.getNumFranges();
            int indexDia = this.dia.id() * numFranges;

            bitset.clear(indexDia, indexDia+numFranges);
     }
这证明了我的意思


谢谢。

这是关于BitSet.length的文档:

length()
Returns the "logical size" of this BitSet: the index of the highest set bit in the BitSet plus one.
如果需要打印出一定数量的位(例如60位),则循环使用常量而不是“.length()”。您可以对任何索引调用“.get(index)”,而不管其长度如何,它将为您提供该位的结果

例如,以下代码生成“0000011000”:

import java.util.BitSet;
公共班机{
公共静态void main(字符串[]args){
位集位=新位集();
位集(5);
位集(6);
StringBuilder位字符串=新的StringBuilder();
对于(int i=0;i<10;i++){
bitString.append(bits.get(i)-“1”:“0”);
}
System.out.println(bitString.toString());
}
}

角位是什么意思?在极端范围内的那些?您所说的简化是什么意思?为什么您关心实施细节?它对你可以调用的方法的结果没有任何影响。是的,我指的是范围极限。通过简化,我的意思是它们被擦除,给定一个大小为60位的位集,如果你将前10位设置为false,它们就不再在该集中。但是如果你把中间的位设为false,它们就会保持不变。路易斯,我也这么想,但是如果你按照我说的做(例如,把前十位设为false),然后你就这样做:
bitset.get(0)
你会得到true,而这不是我需要的结果。发布你的代码会有帮助。我可以说的一点是,length()方法可能不会执行您认为它会执行的操作,因为它基于位集的基数。换句话说,length将在最大索引处寻找1来确定长度。如果所有位都设置为false,那么将返回0。然后想象问题发生在第一位,这将不起作用。几年前,我在BitSet类中工作了很多次,我认为第一位不存在这个问题。如果你认为是这样,请给出一个简单的例子来说明这一点。
length()
Returns the "logical size" of this BitSet: the index of the highest set bit in the BitSet plus one.
import java.util.BitSet;

public class Main {

    public static void main(String[] args) {
        BitSet bits = new BitSet();
        bits.set(5);
        bits.set(6);
        StringBuilder bitString = new StringBuilder();
        for (int i = 0; i < 10; i++) {
            bitString.append(bits.get(i) ? "1" : "0");
        }
        System.out.println(bitString.toString());
    }
}