我尝试BitSet在java中学习集合.我已经读过它使用里面的位.
位集的每个*分量都具有{@code boolean}值
我写了一个小应用程序:
BitSet bitSet = new BitSet();
bitSet.set(9);
bitSet.set(5);
bitSet.set(3);
System.out.println(bitSet);
System.out.println(Arrays.toString(bitSet.toByteArray()));
Run Code Online (Sandbox Code Playgroud)
我想知道我可以将值与1和0区分开来.
另外我不明白输出:
{3, 5, 9}
[40, 2]
Run Code Online (Sandbox Code Playgroud)
请解释一下这个系列的用法?
您设置位数3,5和9:
byte# 1 0
index … 9 8 7 6 5 4 3 2 1 0
value … 1 0 0 0 1 0 1 0 0 0
Run Code Online (Sandbox Code Playgroud)
二进制10是十进制的2(2¹= 2).
二进制00101000是十进制的40(2³+2⁵= 8 + 32 = 40).
BitSet逻辑上表示"根据需要增长的位向量"(javadoc).
通过via创建时new BitSet(),所有位都设置为0(false).
0 5 10
| | |
000000000000... (virtually infinite sequence)
Run Code Online (Sandbox Code Playgroud)
使用set(x)设置为1(真)位置x的位(第一个位置为0); 例如,在您的代码中启用第3,5和9位.
0 5 10
| | |
000101000100...
Run Code Online (Sandbox Code Playgroud)
toString() 报告设置为1的位列表,即示例中的3,5和9.
toByteArray()将内容转换BitSet为一系列byte值,每个值包含8个连续位的值,以小端顺序(即从中的最小索引开始BitSet).{40, 2}您的示例中的输出来自:
7 0 15 8 <- position in BitSet
| | | |
{00101000 , 00000010} <- toByteArray(), binary
| |
{ 40 , 2 } <- toByteArray(), decimal
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |