当一个元素被加到ArrayList的最开端时,所有已经存在的元素都会后移,这就意味着数据移动和复制上的开销。相反的,将一个元素加到LinkedList的最开端只是简单的未这个元素分配一个记录,然后调整两个连接。在LinkedList的开端增加一个元素的开销是固定的,而在ArrayList的开端增加一个元素的开销是与ArrayList的大小成比例的。![]() package work; import java.util.*; // 假如有一个列表,要对其进行大量的插入和删除操作 // 以一个极端的例子,重复的在一个列表的开端插入一个元素 public class ListCompare { static final int N=50000; static long timeList(List list){ long start=System.currentTimeMillis(); Object o = new Object(); for(int i=0;i<N;i++) list.add(0, o); return System.currentTimeMillis()-start; } public static void main(String[] args) { System.out.println("ArrayList耗时:"+timeList(new ArrayList())); System.out.println("LinkedList耗时:"+timeList(new LinkedList())); } } |
相关文章
- Java-ArrayList和Vector的区别
- char 和 varchar2 区别
- oracle数据库中VARCHAR2(50 CHAR) 和VARCHAR2(50) 有啥区别?
- Exception printStackTrace和getMessage方法的区别
- JDK 17和JDK 8及Spring Boot 2和Spring Boot 3的区别:
- 设计一个类Student: (1)属性包括姓名、学号和成绩 (2)方法,按照成绩从高到低的顺序输出姓名、学号和成绩信息。 编写测试类运行上面的方法。
- LinkedList和ArrayList之间互相转换
- .NET Core(C#)使用WebView2 执行GET和POST请求的方法
- ArrayList和LinkedList的区别
- JDK中ArrayList、HashMap和HashSet的equals方法源码分析