JavaSE 学习参考:ArrayList和LinkedList区别

ArrayList和LinkedList这两个都是List接口的实现类,两者都符合List接口特征允许存储重复元素,逻辑上是有序的,允许通过索引随机访问,但两者还是有区别:

对于存储空间上ArrayList是实现了基于数组的数据结构,数据元素保存在连继分配的内存,占用空间较小,LinkedList基于链表的数据结构,除了保存数据本身之外,还需要保存每个数据元素的前继和后继元素引用。占用内存空间较大。

对于随机访问get和set,ArrayList性能上优于LinkedList,因为LinkedList要从表头开始搜索。

对于添加和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

示例程序演示向两类列表对象中插入一条记录,性能上差别。

示例代码:

public class Test {

public static void main(String[] args) {

List aList=new ArrayList();

for(int i=0;i<1000000;i++){

//向aList中添加1000个字符串

aList.add(i+"");

}

List bList=new LinkedList();

for(int i=0;i<1000000;i++){

//向bListList中添加1000个字符串

bList.add(i+"");

}

long begin=System.currentTimeMillis();

aList.add(100,"List");

long end=System.currentTimeMillis();

System.out.println("ArrayList添加操作耗时:"+(end-begin));

begin=System.currentTimeMillis();

bList.add(100,"List");

end=System.currentTimeMillis();

System.out.println("LinkedList添加操作耗时:"+(end-begin));

}

}

运行程序,结果如下:

ArrayList添加操作耗时:2

LinkedList添加操作耗时:0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容