1、特点:
重复性:数据可以重复
null值:有
有序性:保证数据插入有序;
插入删除效率高、访问效率低
2、底层源码研究:
底层数据结构:双向链表
构造函数:
基本属性:头结点,尾节点,size 、内部节点类node;
默认值: 无
扩容方式: 链表式扩容
增删改查方法: 删除节点时得判断此节点的位置(头部,中间,尾部)
3、部分重点方法介绍:
LinkedList(Collection <? extends E> elements ) : 构造一个空链表,把集合中的所有元素添加到这个链表中
void addFirst(E element) : 头插
void addLast (E element):尾插
E getFirst();
E getLast(); 获取头或尾
E removeFirst () :
E removeLast () : 删除并返回头部或尾部的元素;
E element() ;检索但不删除此列表的头;
Inteator inteator (int index); 返回一个从指定位置开始的迭代器
ListInteator listInteator(int index); 返回一个从指定位置开始的ListInteator迭代器
boolean offer(E o); 将指定元素添加至列表尾部;
boolean offerFirst(E o) ; 将指定元素添加至列表头部;
E peek() ; 检索但不删除此列表的头;
E peekFirst();
E peekLast();
E poll(); 检索并删除此列表的头
E pollFirst();
E pollLast();
4、思考:
Arraylist和Linkedlist的异同:
相同点:
1、都是List接口下的实现类,具有list提供的类方法;
2、都可以保证元素插入有序;
3,、元素可重复;
4、可以存在null值;
5、线程不安全;
不同点:
1、底层结构:前者为数组,后者为双向链表;
2、特有方法:LinkedList实现了Deque接口;具有一些其他方法;
3、效率:ArrayList查询效率高(o1)、移动 删除效率低,LinkedList添加(o1),删除效率高,访问效率低;
4、使用场景: 查找操作比较多的场景---->ArrayList
修改、添加操作多的场景—>LinkedList
LinkedList
最新推荐文章于 2022-10-14 23:37:10 发布