【问题标题】:Java efficiently comparing bits of equally sizes byte arraysJava 有效地比较大小相等的字节数组的位
【发布时间】:2017-08-10 18:26:54
【问题描述】:

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

【问题讨论】:

标签: java arrays performance bit-manipulation


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    • 通过从第一个数组中读取 64 位块创建一个 long 值;
    • 通过从第二个数组中读取 64 位块创建另一个长值;
    • 如果两个 long 的 XOR 不为 0,则这些块有一些不同的值;
    • 如果您完成了整个数组长度并且所有 XOR 均为 0,则数组是相同的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 2011-07-03
      • 1970-01-01
      • 2013-10-25
      • 2022-08-05
      相关资源
      最近更新 更多