欢迎回家
我们一直在改变

arraylist、数组、linkedlist的区别

一、数组

优点:数组在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单。

缺点: 在数组的两个数据间插入数据是很麻烦的,而且在声明数组的时候必须指定数组的长度,数组的长度过长,会造成内存浪费,过短会造成数据溢出的错误。

二、ArrayList

        ArrayList是一个动态数组,也是我们最常用的集合,它的底层实现是基于动态数组。每一个ArrayList都有一个初始容量(10),该容量代表了数组的大小。随着容器中的元素不断增加,容器的大小也会随着增加。在每次向容器中增加元素的同时都会进行容量检查,当快溢出时,就会进行扩容操作。ArrayList中允许插入不同类型的数据。

扩容总的来说就是分两步:

1、扩容

        把原来的数组复制到另一个内存空间更大的数组中

2、添加元素

        把新元素添加到扩容以后的数组中

三、Linkedlist

        LinkedList使用了循环双向链表数据结构,它本身有自己特定的方法,如: addFirst(),addLast(),getFirst(),removeFirst()等. 由于是采用链表实现的,因此在进行insert和remove动作时在效率上要比ArrayList要好得多。

 四、总结: 
(1)数组的容量是固定的,只能一次获取或设置一个元素的值,而ArrayList或List的容量可根据需要自动扩充、修改、删除或插入数据。

(2)ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

(3)对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。

(4)对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

原文链接:https://my.oschina.net/u/3879705/blog/3057964

赞(0)
未经允许不得转载:91coding » arraylist、数组、linkedlist的区别
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

立即登录   注册

91CODING 小白轻松上手,大牛稳健进步

关于我们免责声明