java.util.Arrays.equals()有限长度 [英] java.util.Arrays.equals() with limited length

查看:190
本文介绍了java.util.Arrays.equals()有限长度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要比较两个字节[]数组的元素,但只到固定长度。
对于整个阵列我使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆