整理自:JavaHungry
在Java中,Array和ArrayList主要有以下五点区别:
1.能否调整大小
Array是静态的数据结构,在创建Array对象后不能改变其大小。
ArrayList是动态的,当元素被加入ArrayList对象时,它的容量会自动增长。
2.性能
两者的性能区别取决于你所调用的函数。
resize()函数改变ArrayList大小时,性能会受到影响。resize()函数会使用临时数组将原来的ArrayList中的元素复制到新的ArrayList中。
add()或get()函数的时间复杂度均为常数。
3.数据类型
ArrayList不能包含基本数据类型。(如:int float double)
Array可以包含基本数据类型和对象
ArrayList<Integer> arraylist = new ArrayList();
arraylist.add(5);
表面上看添加了基本数据类型int,实际上JVM通过自动封箱(?Autoboxing)将int型隐式转换成了Integer型。
也就是:
ArrayList<Integer> arraylist = new ArrayList();
arraylist.add(new Integer(5));
4.遍历元素
ArrayList可以使用迭代器和for循环(包括for each循环)
Array使用for循环
5.能否多维
ArrayList是一维的,但可以嵌套
ArrayList<ArrayList<String>> arraylist = new ArrayList();
arraylist.get(0).add("Test");
System.out.println(arraylist.get(0).get(0));
Array是多维的
Integer addarrayobject[][] = new Integer[3][2];
addarrayobject[0][0]= new Integer(8)