Arrays 数组或数组列表太大?

Arrays 数组或数组列表太大?,arrays,arraylist,Arrays,Arraylist,我已经问过自己很多次了,是不是太大了 int[]测试=新的int[1000] 或者ArrayListArrayList test=new ArrayList()在性能方面会更好。我应该使用哪一个?使用一个能够自动适应其内容大小的容器,而不是一个你认为总是足够大的固定大小的容器,几乎总是更好的。像new int[1000]这样的硬编码大小是一个红旗,这意味着程序有1000个值的任意限制,如果它最终需要更多的值,可能会以错误的方式失败。int[]从内存的角度来看,将比ArrayList好得多,因为I

我已经问过自己很多次了,是不是太大了
int[]测试=新的int[1000]

或者ArrayList
ArrayList test=new ArrayList()
在性能方面会更好。我应该使用哪一个?

使用一个能够自动适应其内容大小的容器,而不是一个你认为总是足够大的固定大小的容器,几乎总是更好的。像
new int[1000]
这样的硬编码大小是一个红旗,这意味着程序有1000个值的任意限制,如果它最终需要更多的值,可能会以错误的方式失败。

int[]从内存的角度来看,
将比
ArrayList
好得多,因为
Integer
对象比
int
原语需要更多内存。然而,元素的访问速度很难评论,因为它取决于JVM


ArrayList
中的add方法执行速度比基于索引的赋值慢。底线是,如果你能在声明之前准确地知道数组的大小,而不是使用
int[]
或者使用
ArrayList

这是什么编程语言?Java没有
ArrayList
,因为它的泛型很糟糕,而.NET没有泛型
ArrayList
——只有非泛型
ArrayList
和泛型
List
。哦,对不起。你是对的,它应该是整数。这一点都不难评论-数组在任何情况下都会更快。Access是一个简单的指针添加。arraylist版本将有一个函数调用,包括虚拟函数查找,然后(很可能)访问相同的数组。实际上数组在Java中是作为对象在内部实现的,因此我认为访问速度将取决于JVM。
array.get(i)
可能正在做与
array[i]
相同的事情。对不起,我应该把问题说得更清楚。我只是想知道,如果数组太大,是使用数组更好,还是使用数组列表更好,如果我(确切地)不知道它需要多大。ArrayList只是一个例子,它也可能是ArrayList/MyTestObject[]。@TimoV:由于
Object[]
ArrayList
需要几乎相同的内存量,因此
ArrayList
的内存开销可以忽略不计(特别是对于大型
ArrayList
)。就执行速度而言,
remove()
insert()
等操作在
ArrayList
的情况下会很慢。由于您不知道数组的大小,因此最好选择
ArrayList