猿问

我如何编写一个函数返回 Java 中索引处的三维数组的深层副本?

在这个任务中,你必须实现一个简单的旅游规划系统。可用旅行的数据是静态给出的,每个旅行都有多个路点。单个航路点由 x 值和 y 值组成。我必须编写 2 个函数: int getCountOfTours- 返回可用游览的数量 int[][] createDeepCopyOfTour - 返回索引 idx 处的游览的深层副本


第一个功能我做了,但是我不明白第二个功能createDeepCopyOfTour


我想弄清楚第二个函数是如何工作的。请帮我。非常感谢你!这是我的代码:


private static final int[][][] TOUR = new int[][][]{

        {{0, 0}, {4, 0}, {4, 3}, {0, 3}}, 

        {{0, 0}, {3, 0}, {3, 4}, {0, 0}}, 

        {{1, 3}, {3, 2}, {0, 4}, {2, 2}, {3, 1}, {1, 4}, {2, 3}}, 

        {{-2, -1}, {-2, +3}, {4, 3}, {0, 0}} 

    };



public static int[][] createDeepCopyOfTour(int idx) {

        throw new UnsupportedOperationException("Not supported yet.");

//I dont understand about this function.

    }   


交互式爱情
浏览 61回答 1
1回答

慕娘9325324

简而言之,深拷贝就是分配一个新的内存区域来存储您要复制的任何内容的副本。在深度复制数组的情况下,您将创建一个新数组并使用 for 循环将值从原始数组复制到新数组中。我可以收集到的 createDeepCopyOfTour 函数的目的是创建一个新数组,其中包含静态 TOUR 数组中指定索引的游览航点。不幸的是,它并不像下面这样简单:private static final int[][][] TOUR = new int[][][]{&nbsp; &nbsp; {{0, 0}, {4, 0}, {4, 3}, {0, 3}},&nbsp;&nbsp; &nbsp; {{0, 0}, {3, 0}, {3, 4}, {0, 0}},&nbsp;&nbsp; &nbsp; {{1, 3}, {3, 2}, {0, 4}, {2, 2}, {3, 1}, {1, 4}, {2, 3}},&nbsp;&nbsp; &nbsp; {{-2, -1}, {-2, +3}, {4, 3}, {0, 0}}&nbsp;};public static int[][] createDeepCopyOfTour(int idx) {&nbsp; &nbsp; return TOUR[idx];}以上将创建一个浅表副本,并且只会返回对原始数组的引用。要创建深拷贝,您需要使用 new 关键字创建一个新数组,该关键字将为您想要复制的任何内容分配新内存,然后使用 for 循环将值复制到新数组中。幸运的是,这很简单,因为我们知道每个航路点坐标只有两个轴,所以您只需要一个 for 循环来复制值。private static final int[][][] TOUR = new int[][][]{&nbsp; &nbsp; {{0, 0}, {4, 0}, {4, 3}, {0, 3}},&nbsp;&nbsp; &nbsp; {{0, 0}, {3, 0}, {3, 4}, {0, 0}},&nbsp;&nbsp; &nbsp; {{1, 3}, {3, 2}, {0, 4}, {2, 2}, {3, 1}, {1, 4}, {2, 3}},&nbsp;&nbsp; &nbsp; {{-2, -1}, {-2, +3}, {4, 3}, {0, 0}}&nbsp;};public static int[][] createDeepCopyOfTour(int idx) {&nbsp; &nbsp; int tour[][] = new int[TOUR[idx].length][2];&nbsp; &nbsp; for (int i = 0; i < TOUR[idx].length; i++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; tour[i][0] = TOUR[idx][i][0];&nbsp; &nbsp; &nbsp; &nbsp; tour[i][1] = TOUR[idx][i][1];&nbsp; &nbsp; }&nbsp; &nbsp; return tour;}
随时随地看视频慕课网APP

相关分类

Java
我要回答