什么是更快:int []或int [] []的ArrayList

时间:2014-10-24 16:54:31

标签: java arrays

哪个更有效,占用更少内存,更快地循环以及为什么?

案例1:

ArrayList<int [9]> 

案例2:

int [9][9] 

谢谢

3 个答案:

答案 0 :(得分:2)

[假设你的意思是ArrayList<>而不是Array<>,因为后者是不可能的。]

通过所有技术措施,原生数组总是会比ArrayList<>更快更小,尽管差异在很多情况下可能非常小。在内部,ArrayList使用本机数组来存储其元素,因此它不可能胜过该数组。

但是,ArrayList<E>的优势在于它实现了所有List<E>界面以及Collection<E>Iterable<E>。通过允许您直接将对象传递给任何接受implement这些接口的参数的函数,这可以使您的代码变得更加简单。

ArrayList<E>的另一个优点是数组可以透明地增大,因此如果您事先不知道数组的大小,则可能更受欢迎。然而,这本身就带来了性能成本 - 如果新大小大于后备存储阵列的当前容量,则必须创建一个全新的数组,然后将原始元素全部复制到其中 - O(n)操作

答案 1 :(得分:0)

我认为你的意思是ArrayList? 如果这就是你的意思:那么一个数组(int[][])总是比列表ArrayList<Integer[]>快 因为ArrayList使用数组,并且每次删除一个值,它都会重写整个数组。

结论: 除非您要一直删除/添加值而不是“数组”的末尾,否则请使用常规数组(int[][]) ,但如果愿意,请使用ArrayList<int[]>

答案 2 :(得分:-2)

int[]int[][]的数组是相同的,由不同的名称调用。考虑到只有一个声明在java中有效(int[][]),问题是什么?