我使用 BitSet 来表示可能填满讲座的时间,情况是当您将角落位设置为false 时,它们会被简化,这意味着它们不再在 BitSet 中。我怎么能要求 BitSet 不简化?
为了让我的解释更清楚,这是代码:
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 默认有 60 位,numFranges=12 和 this.dia.id()=4。这将使最后 12 位设置为 0。我得到的结果是:
111111111111111111111111111111111111111111111111
但是如果 this.dia.id()=3 我得到:
11111111111111111111111111111111111100000000000011111111111
您可以通过以下方式打印 BitSet:
public static void printBitset(BitSet b) {
StringBuilder s = new StringBuilder();
for( int i = 0; i < b.length(); i++ )
{
s.append( b.get( i ) == true ? 1 : 0 );
}
System.out.println( s );
}
这证明了我在说什么。
谢谢你。
白衣非少年
达令说
随时随地看视频慕课网APP
相关分类