ArrayList和LinkedList总结

首先ArrayList和LinkedList都是List集合下的两个实现类,由于这两个类都没有synchronized这个关键字做修饰,所以都是非线程同步的(即线程不安全)

Arraylist
数组存储
ArrayList的数据存储是基于数组实现的,根据他的数组下标可以快速的查询到需要查找的数据,但是如果要增加或者删除一个数据的话,相比查找的效率会低一些。

初始容量和扩容机制
arraylist的初始化大小为0,当第一次需要用到内存空间的时候,会去调用add方法,扩容10个内存空间;当10个内存空间不足以支撑目前的数据时,就再调用grow方法,扩容初始容量的1.5倍内存空间。已达到可以支持该数据数量。

LinkedList
数据存储
LinkedList数据存储是基于链表实现的,由存储元素的节点连接而成,且每一个节点都包含一个节点值,和前驱结点的引用和后继节点的引用,当需要进行增加或删除一个数据的时候,只需要将两个关联的节点的引用进行相应的修改即可,所以linkedlist没有初始容量,也没有扩容机制。

实现接口
linkedlist实现了deque接口,所以可以作为双端队列使用
同时实现了cloneable接口,所以可以进行相应的克隆操作
也实现了Serializabled接口,所以可以进行序列化操作

方法(栈和队列)
linkedlist可以调用addFirst方法在前驱结点插入数据进行栈的操作(先进后出)
调用addLast方法在后继结点插入数据进行队列的操作(先进先出)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41518597/article/details/103483273