微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将长值数组编码为 BitSet

如何解决将长值数组编码为 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

是否可以对 long 数组执行相同操作?

提前致谢,

解决方法

使用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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。