Java有效地比较相同大小的字节数组的位



如何在Java中有效地比较两个大小相等的byte[]位? 可以通过从给定数组构造它们来使用BitSet,但是这种方法并不像使用位操作和位掩码在数组中移动那样有效。实施会是什么样子?

可以通过

从给定数组构造它们来使用BitSet,但是这种方法并不像使用位操作和位掩码在数组中移动那样有效。

BitSet实际上在引擎盖下使用位操作和位掩码。 如果您仍然只想使用byte[](例如,为了避免byte[]BitSet构造的开销(,请查看BitSet#get(int(实现

  • 通过从第一个数组读取 64 位块来创建一个长值;
  • 通过从第二个数组读取 64 位块来创建另一个长整型值;
  • 如果两个长头的 XOR 都不为 0,则这些块具有一些不同的值;
  • 如果您完成了整个数组长度并且所有 XOR 均为 0,则数组相同。

最新更新