java - 将长值数组编码为 BitSet
问题描述
我看到我们可以将一个整数数组编码为一个 BitSet 并检索它们,如下所示:
int[] ints = new int[]{5, 7, 25, 100102244};
BitSet b = new BitSet();
for (int i=0;i<ints.length;i++)
b.set(ints[i]);
b.stream().forEach(i -> System.out.println(i));
哪个输出
5
7
25
100102244
是否可以对 longs 数组做同样的事情?
提前致谢,
解决方案
使用LongBuffer:
import java.nio.*;
import java.util.*;
var buffer = LongBuffer.wrap(new long[] { 5, 7, 25, 100102244 });
var bitset = BitSet.valueOf(buffer);
System.out.println(bitset);
for (long l : bitset.toLongArray()) {
System.out.println(l);
}
{0, 2, 64, 65, 66, 128, 131, 132, 194, 197, 198, 204, 205, 206, 208, 209, 210, 212, 213, 214, 215, 216, 218}
5
7
25
100102244
推荐阅读
- here-api - 地图图像 API - 区域资源 - 请求 URL 太长
- ruby - Ruby RSpec Net:HTTP - 如何在模拟响应时按预期测试请求有效负载
- python - 在 python 3.8 shared_memory 中,resource_tracker 需要由子进程继承,但这是如何实现的呢?
- flutter - 如何在颤动中创建多色按钮
- c# - 在 Blazor 中是否有更短的方法来完成这项任务?
- c++ - gcore如何处理多线程程序?
- java - Eclipse 没有打开正确的自动填充
- tensorflow - 为什么每次我重新运行程序时准确性都会改变
- r - 将分位数选择变为滑块
- for-loop - 如何通过索引更改元素的 vec 值?