”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 Java 中创建二维数组的真实副本而不产生意想不到的后果?

如何在 Java 中创建二维数组的真实副本而不产生意想不到的后果?

发布于2024-11-17
浏览:297

How do you create a true copy of a two-dimensional array in Java without unintended consequences?

在 Java 中有效复制二维数组

使用二维数组时,通常需要创建原始数组以保留其原始值。然而,像old = current这样的直接赋值可能会导致意想不到的后果。

理解Java数组赋值

在Java中,数组是对象,数组之间的赋值是引用到同一个底层数组。因此,更新一个数组会影响另一个数组,因为它们都指向相同的数据。

不正确的复制方法

提供的方法,old()和keepold(),只需分配对数组的引用即可。因此,当调用 old() 后更新 current 时,更改也会反映在 old 中。类似地,调用 keepold() 后,current 成为对 old 的引用,并且对 old 的任何更新都会更新 current。

使用 Streams API 进行有效复制 (Java 8 )

要创建数组的真实副本,需要执行深复制。 Java 8 中引入的流 API 提供了一种有效的方法来实现此目的,使用以下代码:

int[][] copy = Arrays.stream(matrix).map(int[]::clone).toArray(int[][]::new);

这里,使用map(int[]::clone)克隆输入数组(本例中的矩阵)的每一行,为每一行创建一个新数组。然后使用 toArray(int[][]::new) 将生成的克隆数组流转换回二维数组。此过程确保副本和原始数组是不同的并且可以独立修改。

最新教程 更多>
  • 如何从 MySQL 中的多个列中选择不同的值组合?
    如何从 MySQL 中的多个列中选择不同的值组合?
    在 MySQL 中从多列中选择不同的值使用数据库时,通常需要从多列中检索唯一的值组合。但是,使用 DISTINCT 关键字可能并不总是能产生所需的结果。本文探讨了从 MySQL 数据库中的两列中选择不同值的另一种方法。考虑下表"foo_bar":foobarac cfdac 一个...
    编程 发布于2024-11-17
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-17
  • 除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于2024-11-17
  • 如何使用 Goose 解决 PostgreSQL 函数中的“未终止的美元引用字符串”错误?
    如何使用 Goose 解决 PostgreSQL 函数中的“未终止的美元引用字符串”错误?
    未终止的美元引用字符串:用分号解决错误在使用 Goose 创建 PostgreSQL 函数的上下文中,本文解决了一个错误在处理函数体内的复杂语句时遇到。 pq 库报告的错误表明美元引用的字符串仍未终止。要解决此问题,请注意以分号为特征的复杂语句需要使用“-- goose StatementBegin...
    编程 发布于2024-11-17
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-17
  • 如何从 PHP 网站执行 Java 程序?
    如何从 PHP 网站执行 Java 程序?
    从 PHP 网站利用 Java 的计算能力肩负着让您的网站用户能够从内部执行 Java 程序的使命浏览器中,本指南将深入研究连接这两个世界的复杂性。从PHPPHP 值得信赖的 exec() 函数成为弥补这一差距的首选武器。它使您能够在 PHP 的怀抱中调用带有参数的任何 Java 程序。像这样的简单...
    编程 发布于2024-11-17
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-17
  • 了解堆栈数据结构:在 JavaScript 中实现堆栈的分步指南
    了解堆栈数据结构:在 JavaScript 中实现堆栈的分步指南
    堆栈是一种简单的线性数据结构,其工作原理就像一堆盘子?️。它遵循后进先出 (LIFO) 原则。将其视为一堆盘子:您只能添加或删除堆顶部的盘子。 为了更好的理解栈,让我们来一次短暂的想象之旅吧?. 想象一下您在一家高档餐厅??️,厨房工作人员正在为忙碌的夜晚做准备??‍?。在餐具区,有一大堆盘子等待使...
    编程 发布于2024-11-17
  • 如何在不使用 if/else 语句的情况下在 CSS 中实现条件逻辑?
    如何在不使用 if/else 语句的情况下在 CSS 中实现条件逻辑?
    CSS 中的条件语句:另一种方法在现代 Web 开发中,基于动态变量无缝调整用户体验至关重要。 CSS 虽然在样式方面功能强大,但缺乏 if/else 等传统条件语句。然而,有几种替代方法可以实现类似的功能。一种方法是利用类。通过使用特定类操作 HTML 元素,您可以根据这些类的存在或不存在来应用不...
    编程 发布于2024-11-17
  • 如何使用 zip 包轻松解压 Go 中的文件?
    如何使用 zip 包轻松解压 Go 中的文件?
    使用 Go 轻松解压使用 zip 包,在 Go 中解压文件变得轻而易举。它的简单性允许您创建如下所示的实用函数:func Unzip(src, dest string) error { r, err := zip.OpenReader(src) if err != nil { ...
    编程 发布于2024-11-17
  • Kotlin Null Safety 与 Java:错误喜剧(但主要是在 Java 中)
    Kotlin Null Safety 与 Java:错误喜剧(但主要是在 Java 中)
    啊,Kotlin 空安全 vs. Java!一场经典的对决,就像哥斯拉与摩斯拉一样,但摧毁城市的怪物更少,更多的是关于……好吧,无。 ? Java,保佑它的心脏,从拨号时代就已经存在了。当时,没有人担心 null 会导致您的应用程序崩溃,因为说实话,互联网导致您的应用程序崩溃的情况要普遍得多。但时...
    编程 发布于2024-11-17
  • 为什么我的 @font-face EOT 字体无法在 IE 7、8 和 9 中通过 HTTPS 加载?
    为什么我的 @font-face EOT 字体无法在 IE 7、8 和 9 中通过 HTTPS 加载?
    @font-face EOT 无法通过 HTTPS 加载问题排查在 IE 7,8 中通过 HTTPS 加载 @font-face EOT 字体时遇到困难,9?难题不在于 HTML 页面的 HTTPS 状态,而在于通过 HTTP 本身加载 EOT 字体。尽管收到了适当的内容类型标头,EOT 字体仍然难...
    编程 发布于2024-11-17
  • 将对象分配为 Null 实际上会影响 Java 中的垃圾收集吗?
    将对象分配为 Null 实际上会影响 Java 中的垃圾收集吗?
    在 Java 中将对象分配为 Null 对垃圾收集的影响在 Java 中将未使用的对象引用分配为 null 对垃圾收集的影响最小过程。现代 Java 垃圾收集器 (GC) 可以高效运行并迅速删除不再可达的对象,即使没有显式 null 赋值也是如此。但是,在某些例外情况下,显式 null 赋值可能会带...
    编程 发布于2024-11-17
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1和$array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求是构...
    编程 发布于2024-11-17
  • 如何在没有循环的情况下有效计算 Numpy 中一维数组的滚动标准差?
    如何在没有循环的情况下有效计算 Numpy 中一维数组的滚动标准差?
    在 Numpy 中实现一维数组的高效滚动窗口滚动窗口的概念涉及迭代数据序列并应用计算指定窗口长度内的数据子集。在给定的上下文中,任务是在不使用 Python 循环的情况下计算 Numpy 中一维数组的滚动标准差。虽然可以使用 Numpy.std 轻松获得标准差,但滚动窗口部分构成了一个挑战。然而,通...
    编程 发布于2024-11-17

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3