数组[]
其容量固定且无法动态改变
最高效
ArrayList
容量可动态增长
效率相对低一些
两者不同
如果无法确定数组大小 建议使用 ArrayList
数组[]使用
创建new []对象
nums[index] = 添加
= nums[index] 获取
ArrayList使用
创建ArrayList对象
使用add()方法 添加对象
使用get(index)获取值
对于ArrayList来说,
当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,在这个临界点的扩容操作,应该来说是比较影响效率的。
ArrayList是Array的复杂版本
ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。
两者转换
字符串举例子
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java1");
list.add("java2");
list.add("java3");
int size = list.size();
String[] temp = list.toArray(new String[size]);
for (String s: temp){
System.out.print(s + " "); // java1 java2 java3
}
}
}
java1 java2 java3
整数转换
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
int size = list.size();
Integer[] b = new Integer[size];
b = list.toArray(b);
for (int s: b){
System.out.print(s + " "); //1 2 3
}
}
}
[] 转换为ArrayList
使用Arrays.asList()
import java.util.ArrayList;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
String[] array = {"java01", "java02", "java03"};
ArrayList<String> arrayList = new ArrayList<>(Arrays.asList(array));
System.out.println(arrayList); // [java01, java02, java03]
}
}