所以我正在处理一个包含人名,地点等的字符串。 因为我在Android中开发它,所以哪种数组在内存使用方面更好。
我的猜测是2D阵列将占用更多内存。例如:人数为5,位置数为1.因此,如果我初始化2D数组,则为2x5。用[0] [x]代表人,[1] [x]代表位置。这意味着[1] [1] - [1] [4]不会被使用并且为空。但系统会为这些指数保留记忆。
因此,两个独立的数组更好。
如果我错了,请纠正我。
答案 0 :(得分:1)
首先,不要过早优化。使用您可以轻松理解的数据结构保存开发和错误修复的时间可能比紧凑内存使用的任何好处都要大。 (欧文对课程的评论是恰当的)。
除此之外,单个阵列更紧凑。数组有24个字节的分配,即使它们是空的。
答案 1 :(得分:0)
在Java中,没有“2d”数组:只有1d数组,但它们可以是数组数组(可以是数组数组的数组等)。
创建一个2d数组会创建多个1d数组来保存元素,然后创建一个数组来保存对这些数组的引用。这是一个对象,它本身带有一些开销,以及特定于数组的长度。
使用单独的1d数组意味着您自己保留对这些数组的引用。
因此,通过使用单独的数组可以节省一些费用,因为您不必存储存储该额外数组所需的gubbins。
然而,除非您创建大量这些数组,否则差异不太可能很重要。坚持使用最符合逻辑,最易读的代码。