如何在Java中有效地比较两个大小相等的byte[]
位? 可以通过从给定数组构造它们来使用BitSet
,但是这种方法并不像使用位操作和位掩码在数组中移动那样有效。实施会是什么样子?
可以通过
从给定数组构造它们来使用
BitSet
,但是这种方法并不像使用位操作和位掩码在数组中移动那样有效。
BitSet
实际上在引擎盖下使用位操作和位掩码。 如果您仍然只想使用byte[]
(例如,为了避免byte[]
BitSet
构造的开销(,请查看BitSet#get(int(实现
- 通过从第一个数组读取 64 位块来创建一个长值;
- 通过从第二个数组读取 64 位块来创建另一个长整型值;
- 如果两个长头的 XOR 都不为 0,则这些块具有一些不同的值;
- 如果您完成了整个数组长度并且所有 XOR 均为 0,则数组相同。