6

Java中的并行数组有什么真正的用例吗?维护N个相互关联的数组似乎太麻烦了。

例子:

int  ages[]   = {0,          17,        2,          52,         25};
String names[] = {"None",    "Mike",    "Billy",    "Tom",      "Stan"};
int  parent[] = {0,          3,         1,          0,          3};

我可以创建一个 Person 类并将对象存储在一个数组中。会贵一点,但很容易使用,对吧?

4

4 回答 4

12

Java 中并行数组的唯一真正优势是作为一种(IMO 极端)措施来减少对象分配和/或堆使用。对于足够大的对象集合,与某些自定义类的单个实例数组相比,3 个数组将占用更少的空间并使用更少的对象。

这种方法通常是一个坏主意,因为它会使您的代码更加脆弱。在大多数情况下,创建和使用自定义类是最好的方法。

注意: Android性能提示另有建议,但这些提示主要集中在减少 GC 暂停的频率/对用户体验的影响。即使是这个建议也有几个方面的警告。

于 2011-03-18T03:42:33.067 回答
11

并行数组是从像 Basic(原始语言)这样的语言中继承下来的,除了数组之外没有其他数据结构。相反,您应该按照您的建议定义对象。

于 2011-03-18T02:19:36.223 回答
1

仅当您尝试表示的内容可以更好地解释为对象时,才创建类/对象表示。

哈希映射是另一种解决方案。例如,如果名称是唯一的,则可以将名称用作键,将年龄用作值,而不是使用不同的数组来存储年龄和名称。

于 2011-03-18T02:24:39.173 回答
1

类更好,但如果用例很窄,例如一个方法体,创建一个是浪费的。如果您有一个Pair类,您可以专门为此目的而无需创建新类。

于 2011-03-18T03:12:59.200 回答