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
。