java.util.Arrays.equals() with limited length(java.util.Arrays.equals() 长度有限)
问题描述
我需要比较两个 byte[] 数组的元素,但最多只能是固定长度.对于整个数组,我使用 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.
再次关于防止错误答案的要求:- 数组等于长度限制.- 我有手动实现,但我想用标准的东西代替它.- 我不想要任何副本.
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 提出的东西,但可以使用原语.这是说明性代码:
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()
返回对原始数组的引用(可能是缺点,可能是优势). - 它适用于原语.
- Backend array is NOT CHANGED in any way.
ByteBuffer.array()
returns reference to original array (could be disadvantage, could be advantage). - It works with primitives.
这篇关于java.util.Arrays.equals() 长度有限的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:java.util.Arrays.equals() 长度有限


- 转换 ldap 日期 2022-01-01
- 获取数字的最后一位 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01