比较 Java 中的两个基元数组?

2024-04-27

我知道 Arrays.deepEquals(Object[], Object[]) 但这不适用于原始类型(由于数组和自动装箱的限制,请参阅这个相关帖子 https://stackoverflow.com/questions/517751/java-generic-method-but-array-of-primitive-data-types-does-not-autobox).

考虑到这一点,这是最有效的方法吗?

boolean byteArrayEquals(byte[] a, byte[] b) {
    if (a == null && b == null)
        return true;

    if (a == null || b == null)
        return false;

    if (a.length != b.length)
        return false;

    for (int i = 0; i < a.length; i++) {
        if (a[i] != b[i])
            return false;
    }
    return true;
}

将您的第一个比较更改为:

if (a == b)
    return true;

这不仅捕获“两个都为空”的情况,还捕获“将数组与其自身进行比较”的情况。

但是,对于更简单的替代方案 - 使用Arrays.equals http://java.sun.com/javase/6/docs/api/java/util/Arrays.html#equals(byte%5B%5D,%20byte%5B%5D)它对每个基本类型都有重载。 (该实现与您的实现非常相似,只是它将数组长度提升到循环之外。在 .NET 上,这可能是一种反优化,但我猜 JRE 库实现者可能更了解 JVM :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较 Java 中的两个基元数组? 的相关文章

随机推荐

  • R purrr:::pmap:如何按名称引用输入参数?

    我正在使用Rpurrr pmap具有三个输入 目前尚不清楚我如何在formula称呼 使用map2时 formula通话进行如下 x y 但是使用的时候怎么办pmap 重现哈德利的例子http r4ds had co nz lists ht
  • 从 split 切换到 preg_split 时 php preg_split 错误

    在从 split 更改为 preg split 以获得 php 5 3 兼容性后 我从 php 收到此警告 PHP Warning preg split Delimiter must not be alphanumeric or backs
  • XML 字符串到 XML 文档

    我有一个完整的 XML 文档String我需要将其转换为 XML 文档并解析文档中的标签 此代码示例取自csharp examples net http www csharp examples net xml nodes by name 写
  • Google App Engine 上的 NestJS 项目显示错误“无法写入文件”&&“EROFS:只读文件系统”

    当我在 Google App 引擎上部署 NestJS 项目时 我正在努力解决如下错误 错误 TS5033 无法写入文件 workspace dist properties dto property filter dto d ts EROF
  • Android:实时图像处理

    我有一个应用程序 它进行相机预览 对每一帧执行一些基本的图像处理功能 例如边缘检测 颜色变化 图像扭曲等 并 实时 将修改后的帧显示到屏幕上 类似于Android Market中的 Paper Camera 应用程序 我的方法总结 我也做过
  • 长异常链的优雅替代方案? [复制]

    这个问题在这里已经有答案了 很多时候我发现自己写的东西看起来像这样 try procedure a except WrongProcedureError try procedure b except WrongProcedureError
  • 具有多个 Item 布局的 ListView 适配器

    我正在考虑向我的 Android 应用程序添加一个带有缩略图的列表视图 左边是缩略图 右边是文字 有没有办法用单独的 xml 文件填充列表视图 例如 我可以为奥地利 英国 美国等提供单独的 xml 并将它们添加到列表视图中吗 我问的原因是
  • 如何将“实例键”添加到 keras 模型输入以在 gcloud ai-platform 中进行批量预测?

    我正在尝试添加 键 以匹配 Google AI Platform 的批量预测输出 但是我的模型输入只允许一个输入 看起来像这样 input tf keras layers Input shape max len x tf keras lay
  • 可以在 __getitem__ 上使用多个参数吗?

    我正在尝试使用 getitem self x y 在我的 Matrix 类上 但在我看来它不起作用 我仍然不太了解如何使用 python 我这样称呼它 print matrix 0 0 是否有可能使用多个参数 谢谢 也许我可以只使用一个参数
  • 敌人不会在 pygame 中自行移动[重复]

    这个问题在这里已经有答案了 好吧 所以我的敌人只有在我移动角色时才会移动 但有时它也会完全从游戏窗口中产生 还有背景 玩家和敌人 在我按下移动按钮之前不会弹出 我对此感到非常抱歉 lmfao 也对我被告知将它们放在那里以提醒 wtf 的文本
  • 要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet

    我在 Kendo UI 网格中绑定了批量记录 响应是从 Json 返回的 我在使用以下格式时遇到错误 问题代码 方法1 public JsonResult KendoserverSideDemo int pageSize int skip
  • 从 C# 运行 32 位或 64 位 PowerShell

    我构建了一个执行 PowerShell 脚本的 32 位 NET DLL 我需要它能够以 64 位模式运行脚本and 32 bit 我已经知道如何使用命令行执行此操作 C Windows Sysnative cmd c powershell
  • Groovy 中的 __LINE__ 功能

    可以通过以下方式获取当前行号 LINE 在 Ruby 或 Perl 中 例如 print filename FILE line LINE Groovy 中有同样的功能吗 不能直接获取 但您可以通过异常 或可抛出 堆栈跟踪来获取它 例如 St
  • 如何使用 C# 获取打印作业状态

    我可以打印文档 但不知道如何获取其状态 我查阅了很多资源 MSDN http support microsoft com kb 322091 检查工作状态的链接 https stackoverflow com questions 55637
  • 如何在查询中获取 MySQL 状态

    是否可以在 MySQL 查询中使用服务器状态变量 我可以从 显示状态 中看到各种指标 但如何计算派生值 例如查询缓存命中率 show global status like Qcache inserts show global status
  • 如何将 NSArray 元素连接到 NSString 中?

    给定一个 NSString 的 NSArray 是否有一种快速方法将它们连接成一个 NSString 带有分隔符 NSArray stuff NSString combinedStuff stuff componentsJoinedBySt
  • 如何使用 jQuery 循环 JSON 文件

    我正在尝试循环下面的 JSON 文件 statements subject A predicate B object C subject D predicate E object F 正如您所看到的 有两个主语 两个谓语和两个宾语 例如 我
  • 正则表达式,获取两个关键字之间的整个字符串

    我正在做一些输出解析 我需要从两个单词之间抓取一大块文本 例如 如果我正在解析文本 Hi this is an example 我希望能够指定我的两个单词是 Hi 和 example 然后我将取回字符串 this is an 我知道正则表达
  • SQL 中的模糊分组

    我需要修改 SQL 表以对稍微不匹配的名称进行分组 并为组中的所有元素分配标准化名称 例如 如果初始表如下所示 Name Jon Q John Q Jonn Q Mary W Marie W Matt H 我想创建一个新表或向现有表添加一个
  • 比较 Java 中的两个基元数组?

    我知道 Arrays deepEquals Object Object 但这不适用于原始类型 由于数组和自动装箱的限制 请参阅这个相关帖子 https stackoverflow com questions 517751 java gene