java.util.Arrays.equals()有限长度 [英] java.util.Arrays.equals() with limited length
问题描述
我需要比较两个字节[]数组的元素,但只到固定长度。
对于整个阵列我使用 java.util.Arrays.equals()
。当然,我可以复制子范围( Arrays.copyOf()
),但我想没有这样做。我也相信应该有没有新的实用方法实现这样做的标准方式。
I need to compare elements of two byte[] arrays but only up to fixed length.
For whole arrays I use java.util.Arrays.equals()
. Of course I can copy sub-ranges (Arrays.copyOf()
) but I'd like not to do so. I am also sure there should be standard way to do so without new utility method implementation.
我需要的正式是一样的东西:
What I need formally is something like:
java.util.Arrays.equals(byte[] a, byte [] b, int length)
任何一点无人不晓?我没有看到广泛使用的方法。
Any point to something well known? I don't see widely used approach.
同样关于什么是要求prevent错误的答案:
- 阵列与长度限制等于。
- 我有手工实现,但我想的东西的标准来取代它。
- 我不希望任何副本
Again about what is asked to prevent false answers: - Array equals with limit on length. - I HAVE manual implementation but I'd like to replace it with something standard. - I don't want any copy.
感谢您提前。
推荐答案
的ByteBuffer提供类似于@meriton提出什么样的东西,但可以与原语工作。
下面是说明code:
ByteBuffer provides something similar to what @meriton proposed but can work with primitives. Here is illustrative code:
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答案的属性:
Properties of @meriton answer:
- 结果是收集与使用它们的全部功能。
- 其实这是有点复制(但不是全部)。
- 需要引用,基元不能被包裹在这种方式。
这答案特价商品。
- 后端阵列是不以任何方式改变。
ByteBuffer.array()
收益
参照原数组(可能是劣势,可能是
优势)。 - 它与原语。
这篇关于java.util.Arrays.equals()有限长度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!