ArrayList和LinkedList特点比较
ArrayList:
数据结构实现,查询快、增删慢
JDK1.2版本,运行效率快、线程不安全。
I. JDK8的ArrayList,实际初始长度是0
II. 首次添加元素时,需要实际分配数组空间,执行数组扩容操作
III. 真正向数组中插入数据,(Lazy懒)用的时候再创建,或再加载,有效的降低无用内存的占用
LinkedList:
I. 链表(链接列表)结构存储,查询慢、增删快。
判断特点的一段代码
import java.util.Arrays;
import java.util.*;
public class TestExercisList {
public static void main(String[] args) {
List li1 = new ArrayList();
List li2 = new LinkedList();
for (int i = 0; i < 100; i++) {
li2.add("Hello");
}
long startNano = System.nanoTime();
for (int i = 0; i < 100; i++) {
li1.add("Hello");
}
System.out.println("数组结构增删时间");
long startNano1 = System.nanoTime();
for (int i = 50; i < 80; i++) {
li2.add(i,"World");
}
System.out.println(System.nanoTime() - startNano1);
System.out.println("链表结构增删时间");
long startNano2 = System.nanoTime();
for (int i = 50; i < 80; i++) {
li1.add(i,"World");
}
System.out.println(System.nanoTime() - startNano2);
System.out.println("数组结构查询时间");
long startNano3 = System.nanoTime();
li1.get(20);
System.out.println(System.nanoTime() - startNano3);
System.out.println("链表结构查询时间");
long startNano4 = System.nanoTime();
li2.get(20);
System.out.println(System.nanoTime() - startNano4);
}
}
结果: