【问题标题】:Two separate arrays or a single 2D array. Which is better?两个单独的阵列或单个二维阵列。哪个更好?
【发布时间】:2018-03-13 15:28:29
【问题描述】:

所以我正在处理一个包含人名、位置等的字符串。 由于我是在Android中开发的,哪种数组在内存使用方面更好。

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

因此,两个单独的数组更好。

如果我错了,请纠正我。

【问题讨论】:

  • 对于您所说的数组大小,差异无关紧要。使用任何使您的代码最易读的东西。
  • 所以对内存影响不大?
  • 不要使用数组,使用类。 public class Person { private String name; private Whatever location; }
  • 使用一个类,然后你可以简单地使用一个 List 来迭代并获得所需的结果,它将使事情变得简单,易于维护和更改。
  • 就我个人而言,我不喜欢过度调整性能——我宁愿制作逻辑数据结构。如果人和位置是一对一的关系,我会毫不犹豫地使用Map。如果人员和位置并不真正相关,我只需将它们分成两个数组或列表。使用 2D 数组可能会使代码更难被其他人理解。

标签: java arrays


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    在Java中,没有“二维”数组:只有一维数组,但它们可以是数组的数组(可以是数组的数组等)。

    创建一个二维数组会创建多个一维数组来保存您的元素,然后创建一个数组来保存对这些数组的引用。这是一个对象,它本身带有一些开销,以及长度等特定于数组的东西。

    使用单独的一维数组意味着您自己持有对这些数组的引用。

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

    然而,除非您要创建大量成对的这些数组,否则差异不大可能很重要。坚持使用最符合逻辑、最易读的代码。

    【讨论】:

      猜你喜欢
      • 2013-06-20
      • 2017-06-15
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多