如何复制二维字符串数组?

2023-12-06

我正在使用一个使用二维字符串数组的程序(一开始可能不是那么聪明,但是呃),我想编写一个函数,它采用这些数组之一(比方说 array1),使一个独立的副本,并返回它(比方说 array2)。但是,当我更改 array2 中的值时,它似乎会反映在 array1 中。

我的函数目前看起来像这样:

public static String[][] copy(String[][] matrix, int n) {
    String[][] out = new String[n+1][n+1];
    for (int i = 0; i < n+1; i++) 
        for (int j = 0; j < n+1; j++) {
            if(matrix[i][j] != null) {
                String cp = new String(matrix[i][j]);
                out[i][j] = cp;
            }

        }

    return out;
}

我声明一个新的字符串数组,然后迭代它,单独复制每个值。当这不起作用时,我什至尝试显式声明每个旧字符串中的新字符串并将其放入数组中。

谁能告诉我哪里错了?


我不确定是什么n参数是for,但如果我需要这样的函数,我会使用这样的东西:

public static String[][] copy(String[][] matrix) {
  String[][] copy = new String[matrix.length];
  for (int idx = 0; idx < matrix.length; ++idx)
    copy[idx] = matrix[idx].clone();
  return copy;
}

您不需要创建该文件的副本String,因为它们是不可变的。正如迈克尔在评论中指出的那样,String(String)如果原始字符串是作为某个非常大的字符串的子字符串创建的,构造函数可能会很有用。另一个用途是当您使用String对象作为锁(不推荐),并希望使用私有实例来避免死锁。

另外,在分配之前检查元素是否为 null 是不必要的;如果循环设置正确,则该元素保证为空。 (如果不是,覆盖它有什么坏处?)

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

如何复制二维字符串数组? 的相关文章

随机推荐

  • 将字符串分割成一定大小的块

    假设我有一个字符串 string str 1111222233334444 我怎样才能把这个字符串分成一定大小的块 例如 将其分解为 4 的大小将返回字符串 1111 2222 3333 4444 static IEnumerable
  • React-Table 的导入问题

    我正在使用react table库在react中创建一个表 几天前 我使用同一个库创建了一个表 没有遇到任何问题 但今天我收到以下错误 尝试导入错误 react table 不包含默认导出 导入为 ReactTable 进口声明 从 反应表
  • C# 中带有布尔条件的三元

    如果我要编写这段代码 它可以与正常的 if else 布局一起正常工作 if isOn i 10 else i 20 虽然我不确定如何使用三元运算符进行转换 isOn true i 1 i 0 错误 无法确定条件表达式的类型 因为 void
  • 如何覆盖默认的 Liferay 登录身份验证?

    我正在使用 Liferay 6 1 我想覆盖默认的 Liferay 登录身份验证并希望设置我的自定义身份验证 到目前为止 我所做的是 我创建了一个钩子插件 并在 Portal properties 文件中设置了以下属性 auth pipel
  • 将 MSBuild PublishProfile 与 Visual Studio 2012 结合使用时,MSDeploy 跳过规则

    我正在尝试使用 WebDeploy 通过自定义 MSDeploy 跳过规则和 Visual Studio 2012 中保存的发布配置文件来发布网站 我可以从命令行使用发布配置文件 但跳过删除文件夹的跳过规则不起作用 我有一个ErrorLog
  • 具有相同密钥的多个条目:24.0.0 rc4=24.0.0 rc4

    将 Android Studio 升级到 2 2 3 后 显示错误 IllegalArgumentException 具有相同密钥的多个条目 24 0 0 rc4 24 0 0 rc4 和 24 0 0 rc4 24 0 0 rc4 最近更
  • 从 VS Code 在终端中运行文件

    是否有任何 VS Code 快捷方式可以让您在 Windows 终端中运行文件 而无需将文件的路径直接写入终端 提前致谢 Try key ctrl shift t command workbench action terminal send
  • 内联汇编的“现实”用途有哪些? [复制]

    这个问题在这里已经有答案了 有什么是我们可以在汇编中做但在原始 C 中不能做的吗 或者有什么在组装中更容易做的事情吗 是否有任何现代代码实际上是使用内联汇编编写的 或者它只是作为遗留或教育功能实现 内联汇编 以及相关说明 调用纯粹用汇编语言
  • Eclipse ADT Bundle 在 Mint 16 Petra 上突然崩溃

    我最近在我的笔记本电脑 四核 8 GB 内存 上安装了 Linux Mint 16 Petra Cinnamon 64 位 我下载了适用于 Linux 64 位 的 ADT Bundle 当我开始使用 Eclipse 在 Android 中
  • 用于跟踪 Visual Studio 中项目的总工作时间的附加组件

    VS2010 是否有一个扩展可以跟踪项目上花费的总时间 因此 开发人员可以看到他为特定解决方案的开发贡献了多少时间 None
  • 在 Jinja2 中合并多个列表

    有没有办法在 Jinja2 的列表中组合多个列表 例如 如果我有 foo moo py jinga template example stack overflow 我期望得到 foo moo py jinga template exampl
  • 如何对包含异步的函数返回的值使用 List.sort?

    我有这个代码 widget items sort a b await getItemDistance a true await getItemDistance b false return itemADistance compareTo i
  • PySide 如何在 python 控制台中查看 QML 错误?

    我有以下代码 if name main os environ QT QUICK CONTROLS STYLE Material app QGuiApplication sys argv engine QQmlApplicationEngin
  • 带条件的正则表达式

    我有一个表 其中存储某些单词或单词组 我想选择以大写字母开头 不包含空格且仅包含字母的条目 我的 SQL 看起来像这样 select word from words where w id gt 100 AND word REGEXP A Z
  • 如何在 TensorFlow 的 MNIST 示例中获取预测的类标签?

    我是神经网络新手 并浏览了针对初学者的 MNIST 示例 我目前正在尝试在 Kaggle 的另一个没有测试标签的数据集上使用此示例 如果我在没有相应标签的测试数据集上运行模型 因此无法像 MNIST 示例中那样计算准确性 我希望能够看到预测
  • dojo dgrid 多个单元格编辑

    是否可以同时编辑 dgrid 的多个单元格 我知道我们可以通过双击 单击该单元格一次编辑一个单元格并更新它 并在onBlur该单元格的编辑数据将针对该单元格进行更新 但我的要求是 单击每行的编辑链接 编辑按钮 这将显示该行所有可编辑单元格的
  • Android Camera API - 奇怪的缩放效果[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 这个问题似乎偏离主题 因为它缺乏足够的信息来诊断问题 更详细地描述您的问题或包括一个最小的例子在问题本身 有关您编写的代码的问题必须描述具体问题 and 包含有效代码重现它 在问题本
  • XPath :绑定到集合的最后一项

    Can I Bind TextBox Text到最后一项ObservableCollection
  • 使用 CGAL 编译一个简单的测试

    我刚刚在 mac 系统上用brew安装了CGAL 现在我很高兴通过一个简单且最小的示例来尝试它 我可以用g 编译它吗 我想用以下命令编译这个示例文件 gcc namefile cpp lCGAL I usr local include CG
  • 如何复制二维字符串数组?

    我正在使用一个使用二维字符串数组的程序 一开始可能不是那么聪明 但是呃 我想编写一个函数 它采用这些数组之一 比方说 array1 使一个独立的副本 并返回它 比方说 array2 但是 当我更改 array2 中的值时 它似乎会反映在 a