当前位置: 首页 > 面试题库 >

如何在Java中对2d数组进行深层复制?

苍德寿
2023-03-14
问题内容

我只是.clone()2D boolean数组上使用过,以为这是一个深复制。

如何执行boolean[][]阵列的深层复制?

我应该遍历它并执行一系列System.arraycopy的操作吗?


问题答案:

是的,你应该遍历2D布尔数组以进行深复制。java.util.Arrays#copyOf如果你使用的是Java 6,请同时查看方法。

我建议使用Java 6的下一个代码:

public static boolean[][] deepCopy(boolean[][] original) {
    if (original == null) {
        return null;
    }

    final boolean[][] result = new boolean[original.length][];
    for (int i = 0; i < original.length; i++) {
        result[i] = Arrays.copyOf(original[i], original[i].length);
        // For Java versions prior to Java 6 use the next:
        // System.arraycopy(original[i], 0, result[i], 0, original[i].length);
    }
    return result;
}


 类似资料:
  • 问题内容: 在Objective-C中,可以通过以下方式进行深度复制: 如何在Swift中进行深度复制? 问题答案: 深拷贝 您的示例不是在StackOverflow上讨论的深层副本。获得对象的真实深层副本通常需要 迅速复制 该协议是提供对象副本的Objective- C方法,因为一切都是指针,并且您需要一种管理任意对象副本生成的方法。对于Swift中的任意对象副本,您可以提供一个便利的初始化程序

  • 问题内容: 我有一个二维数组,称为int类型的矩阵,我想用一种方法将其复制到局部变量,以便我可以对其进行编辑 什么是复制阵列的最佳方法,我遇到了一些麻烦 例如 问题答案: 有两种复制数组的好方法是使用clone和。 这是在2D情况下如何使用克隆的方法: 对于System.arraycopy(),你可以使用: 我没有基准,但是我可以用我的2美分打赌,它们比你自己做的更快,更不容易出错。特别是,它是用

  • 问题内容: 我的数组不包含任何字符串。但是它包含对象引用。每个对象引用都通过toString方法返回名称,id,作者和发布者。 现在,我需要按名称对对象数组进行排序。我知道如何排序,但是我不知道如何从对象中提取名称并对它们进行排序。 问题答案: 你有两种方法可以使用Arrays实用程序类 实现一个Comparator并将数组与比较器一起传递给sort方法,该方法将其作为第二个参数。 在对象所属的类

  • 我有一个JSON数组: 结果为“数据”: 我怎么能有一个升序按“datesurder”? THX

  • 我自己似乎无法解决这个问题。我有一个二维阵列, 字符串收集器[名称][#ofstuff] 我试着用这段代码来分类: 我对Compare很陌生,试着阅读了很多关于它的文档,但并不真正理解它。排序函数是否只获取我想要比较两个字符串的信息,然后执行它的操作? 出于某种原因,此代码在每次读取时都会抛出NullPointerException。 p1处线程“AWT-event queue-0”Java .

  • 问题内容: 对于Java中的数组,我们可以使用获取数组的。同样,如何获得 2D 数组的行数和列数? 问题答案: 好吧,您可能想要获取行数和列数。也就是说,如果您这样定义数组: