use*_*718 1 java initialization bitset
我正在为我的程序使用BitSet类.我需要一个内联声明,如:
BitSet bits1 = new BitSet(); //standard declaration
bits1.set(0,2);
bits1.set(4,6);
System.out.println(bits1); //110011
BitSet bits2 = BitSet.valueOf(new long[] {1,1,0,0,1,1}); //inline
System.out.println(bits2);
Run Code Online (Sandbox Code Playgroud)
有了这个代码,我试图复制相同的位集合是在BITS1,在BITS2.问题如下:打印和值不同.我设置的BitSet是110011.第一个打印出{0,1,4,5}并且它是正确的,因为这是用索引打印BitSet的"好方法",第二个打印出{0,64, 256,320}.你可以看到第二个是错的.我很确定内联初始化是错误的,但我无法弄清楚如何解决这个问题.
数组中的每个long代表64位.您只需要设置4位的长整数:
BitSet bits2 = BitSet.valueOf(new long[] {0b110011});
System.out.println(bits2);
// {0, 1, 4, 5}
Run Code Online (Sandbox Code Playgroud)