Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个单独的阵列或单个二维阵列。哪个更好?_Java_Arrays - Fatal编程技术网

Java 两个单独的阵列或单个二维阵列。哪个更好?

Java 两个单独的阵列或单个二维阵列。哪个更好?,java,arrays,Java,Arrays,因此,我正在处理一个字符串,其中包含人名、地点等。 哪种阵列在内存使用方面更好,因为我是用Android开发的 我的猜测是2D数组将占用更多内存。例如:人数为5,地点为1。因此,如果我初始化一个2D数组,它将是2x5。[0][x]表示人员,[1][x]表示位置。这意味着[1][1]-[1][4]不会被使用,并且是空的。但系统将为这些索引保留内存 因此,两个单独的阵列更好 如果我错了,请纠正我。首先,不要过早地优化。使用易于理解的数据结构进行开发和错误修复所节省的时间可能比紧凑型内存使用带来的任何

因此,我正在处理一个字符串,其中包含人名、地点等。 哪种阵列在内存使用方面更好,因为我是用Android开发的

我的猜测是2D数组将占用更多内存。例如:人数为5,地点为1。因此,如果我初始化一个2D数组,它将是2x5。[0][x]表示人员,[1][x]表示位置。这意味着[1][1]-[1][4]不会被使用,并且是空的。但系统将为这些索引保留内存

因此,两个单独的阵列更好


如果我错了,请纠正我。

首先,不要过早地优化。使用易于理解的数据结构进行开发和错误修复所节省的时间可能比紧凑型内存使用带来的任何好处都要多。(欧文对课程的评论是中肯的)

除此之外,单个阵列更紧凑。数组有24个字节的分配,即使它们是空的。

在Java中,没有“2d”数组:只有1d数组,但它们可以是数组的数组(可以是数组的数组,等等)

创建二维阵列将创建多个1d阵列以容纳图元,然后创建一个阵列以容纳对这些阵列的引用。这是一个对象,它本身有一些开销,以及特定于数组的东西,如长度

使用单独的1d数组意味着您自己持有对这些数组的引用

因此,通过使用单独的数组可以节省一些成本,因为您不必存储存储额外数组所需的gubbins


但是,除非您创建大量的阵列对,否则差异不太重要。坚持使用最具逻辑性和可读性的代码。

对于您所讨论的数组大小,差异是无关紧要的。使用使你的代码最具可读性的东西。这样就不会对内存造成太大影响?不要使用数组,使用类<代码>公共类Person{private String name;private which location;}使用一个类,然后你可以简单地使用一个列表进行迭代并获得所需的结果,它将使事情保持简单,易于维护和更改。就我个人而言,我不喜欢过度调整性能-我宁愿创建逻辑数据结构。如果人员和地点是一对一的关系,我会毫不犹豫地使用
地图
。如果人员和位置没有真正的关联,我会简单地将它们分成两个数组或列表。使用2D数组可能会使其他人更难理解代码。