gpt4 book ai didi

长度有限的 java.util.Arrays.equals()

转载 作者:搜寻专家 更新时间:2023-11-01 03:58:13 24 4
gpt4 key购买 nike

我需要比较两个 byte[] 数组的元素,但最多只能达到固定长度。对于整个数组,我使用 java.util.Arrays.equals()。当然,我可以复制子范围 (Arrays.copyOf()),但我不想这样做。我也确信应该有标准的方法来做到这一点,而不需要新的实用方法实现。

我正式需要的是这样的:

java.util.Arrays.equals(byte[] a, byte [] b, int length)

有什么众所周知的事情吗?我没有看到广泛使用的方法。

再次关于防止错误答案的要求: - 数组等于长度限制。 - 我有手动实现,但我想用标准的东西替换它。 - 我不想要任何副本。

提前谢谢你。

最佳答案

ByteBuffer 提供了类似于@meriton 提议的东西,但可以使用原语。这是说明性代码:

import java.nio.ByteBuffer;

public class Main {

public static void main(String [] args) throws Exception {

byte [] a1 = {0, 1, 0, 1};
byte [] a2 = {0, 0, 1, 0};

boolean eq = ByteBuffer.wrap(a1,0,3).equals(ByteBuffer.wrap(a2,1,3));
System.out.println("equal: " + eq);
}
}

@meriton 回答的属性:

  • 结果是可以充分利用它们的集合。
  • 实际上它有点复制(但不是完整的)。
  • 需要引用,基元不能以这种方式包装。

本回答特价。

  • 后端数组没有任何变化。 ByteBuffer.array() 返回对原始数组的引用(可能是不利的,可能是优势)。
  • 它适用于原语。

关于长度有限的 java.util.Arrays.equals(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16646967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com