我观察到,与LinkedList
相比,ArrayList
中的插入操作花费的时间(以毫秒为单位(更少。请对此有所说明。
这是我的测试代码:
List<String> strLnkdList = new LinkedList<String>();
long start1 = System.currentTimeMillis();
for(int i=0;i<10000;i++){
strLnkdList.add("Test"+i);
}
long end1 = System.currentTimeMillis();
System.out.println("LinkedList Time in millis: " + (end1-start1));
List<String> strArrayList = new ArrayList<String>(10);
start1 = System.currentTimeMillis();
for(int i=0;i<10000;i++){
strArrayList.add("Test"+i);
}
end1 = System.currentTimeMillis();
System.out.println("ArrayList Time in millis: " + (end1-start1));
输出:
LinkedList Time in millis: 22
ArrayList Time in millis: 10
链表只需要更改要删除的节点的两个相邻节点(元素(中的指针位置。
数组列表 需要移动所有元素以填充已删除元素创建的空间。
有些人想象阵列的积木塔使其缩短 1 个街区,您必须将其拉出,然后将每个块向下移动 1
对于链表,就像你有一个包含块的字符串,你只是剪切它