Java中ArrayList和LinkedList区别:
ArrayList和LinkedList的大致区别如下:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
ArrayList更适合读取数据,linkedList更多的时候添加或删除数据。
ArrayList内部是使用可増长数组实现的,所以是用get和set方法是花费常数时间的,但是如果插入元素和删除元素,除非插入和删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。
LinkedList是使用双链表实现的,所以get会非常消耗资源,除非位置离头部很近。但是插入和删除元素花费常数时间。
上面只是一些面试可以答的点,但是要学习,就得好好看一下下面的理论了,我们不只是为了找工作面试,是真的想学到东西嘛,对吧~好,那就跟我一起进入这个List的世界,我也在学习,让我们一起进步吧~~
List概括
先来回顾一下List在Collection中的的框架图:
从图中我们可以看出:
1. List是一个接口,它继承与Collection接口,代表有序的队列。
2. AbstractList是一个抽象类,它继承AbstractCollection。AbstractList实现了List接口中除了size()、get(int location)之外的方法。
3. AbstractSequentialList是一个抽象类,它继承与AbstrctList。AbstractSequentialList实现了“链表中,根据index索引值操作链表的全部方法”。
4. ArrayList、LinkedList、Vector和Stack是List的四个实现类,其中Vector是基于JDK1.0,虽然实现了同步,但是效率低,已经不用了,Stack继承与Vector,所以不再赘述。
5. LinkedList是个双向链表,它同样可以被当作栈、队列或双端队列来使用。
ArrayList和LinkedList