pol*_*nts 10
Set<Byte> Java Collections Framework中的选项如果您想利用Java Collections Framework,您可以拥有一个java.util.Set<Byte>.不幸的是,Java泛型不适用于原语.java.lang.Byte是的盒子类型byte.也许你可以使用的实现是一个TreeSet; 它是一个SortedSet,所以你可以按照byte它们的自然顺序对(盒装)进行排序.
BitSet 表现选择另一种选择是java.util.BitSet.这是一种非常节省时间和空间的数据结构,它使用位实现集合表示,即int i如果设置了位,则"在集合中" i.
BitSet 不属于Java Collections Framework.
这是一个示例用法:
BitSet bytes = new BitSet();
bytes.set(3);
bytes.set(7);
bytes.set(11);
bytes.set(11);
bytes.set(1000);
System.out.println(bytes);
// {3, 7, 11, 1000}
System.out.println(bytes.cardinality()); // 4
System.out.println(bytes.get(10)); // false
Run Code Online (Sandbox Code Playgroud)
请注意,您可能set位于byte范围之外.
实际上,您不能直接set在该byte范围内的所有位,因为它byte是Java中的signed数据类型.您可以使用位屏蔽任何转换byte成int的0..255范围如下:
byte b = -1;
// bytes.set(b); // throws IndexOutOfBoundsException
bytes.set(b & 0xFF);
System.out.println(bytes);
// {3, 7, 11, 255, 1000}
Run Code Online (Sandbox Code Playgroud)
然后,您可以byte按如下方式迭代集合中的所有内容:
for (int i = -1; (i = bytes.nextSetBit(i + 1)) != -1; ) {
byte b = (byte) i;
System.out.println(b);
}
// 3, 7, 11, -1, -24
Run Code Online (Sandbox Code Playgroud)
需要注意的是由于byte [-128,127]要int [0,255]映射,底片来阳性后.BitSet也有利于高效率的操作集与其他BitSet一样or,and,xor,equals,intersects,等.
byte签署了
byte是-128..127,不0..255.| 归档时间: |
|
| 查看次数: |
3617 次 |
| 最近记录: |