LinkedList

目录

介绍

特性

和ArrayList比较

数据结构

操作

内存使用率

用法

创建

添加元素

删除元素

队列操作

结论


介绍

双向链表,实现了List和Deque接口。实现了List接口下的所有操作且元素包含null值。

特性

几个比较重要的特性

1、not  synchronized 不是线程安全的

2、通过iterator和listiterator迭代器是fail-fast,意思就是说如果在遍历集合中对元素进行修改则会抛出 ConcurrentModificationException 

3、每一个元素就是一个节点,保留对上和下节点的引用

4、保持插入顺序

尽管LinkedList不是线程安全的,不过可以Collections实现线程安全

List list = Collections.synchronizedList(new LinkedList(...));

和ArrayList比较

都实现了List接口,语义不同根据特定场合选择使用

数据结构

ArryList 是数组,LinkedList是双向链表

操作

LinkedList在插入、扩展、删除的操作效率更高一些,因为无需重定义数组的大小只需要在添加元素到集合的任意位置时更新一下节点的引用即可

内存使用率

LinkedList的内存使用率更高一些,因为每个节点都会有两个引用对前一个元素和后一个元素,而ArrayList则只有数据和索引

用法

创建

LinkedList<Object> linkedList = new LinkedList<>();

添加元素

add() addAll() addFirst() addLast() 

删除元素

removeFirst() removeLast()  removeLastOccurrence() removeFirstOccurrence()

队列操作

双向队列提供类似队列的行为(实际上双向队列接口继承单向队列)

linkedList.poll();
linkedList.pop();

方法的意思获取第一个元素并从集合中删除它。

不同点是当集合为空时pop会抛出NoSuchElementException 而poll 则会return null

新增元素

linkedList.push(Object o);

添加元素作为集合的头

结论

ArryList 通常默认为List的接口实现,但是当元素频繁添加、删除和修改是建议使用LinkedList提高操作效率。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独步秋风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值