Java基础之LinkedList

Java基础之LinkedList


一、介绍

  • 底层是一个双向链表实现的List,内部每一个节点采用内部类Node表示,通过first、last引用分别指向链表的第一和最后一个元素
  • 非线程安全,可以用Collections.synchronizedList()方法对其进行包装
  • 允许重复元素
  • 插入和删除效率高(只需要移动指针指向),查询效率低(需要遍历整个链表)
  • 除了实现List父类的add方法,还增加了addFirst、addLast分别将元素插入头部和尾部两个方法
  • 头插时,不需要考虑移位、以及扩容的问题,直接把元素定位到首位,然后用head指针指向即可
  • 尾插时,与头插相比耗时点会在对象的实例化上面(new Node<>(l, e, null))
  • 内存分配不需要连续的空间,只要机器内存足够,存储的数据容量不受限

LinkedList的实现方式决定了所有跟下标相关的操作都是线性时间,而在首段或者末尾删除元素只需要常数时间。为追求效率LinkedList没有实现同步(synchronized),如果需要多个线程并发访问,可以先采用Collections.synchronizedList()方法对其进行包装。

二、add()

add()方法有两个版本,一个是add(E e),该方法在LinkedList的末尾插入元素,因为有last指向链表末尾,在末尾插入元素的花费是常数时间。只需要简单修改几个相关引用即可;另一个是add(int index, E element),该方法是在指定下表处插入元素,需要先通过线性查找找到具体位置,然后修改相关引用完成插入操作。

在这里插入图片描述

  • 平安夜,请你吃苹果,吃个青苹果,祝你青春永驻,永不老!吃个黄苹果,祝你飞黄腾达,事业高!吃个红苹果,祝你红红火火,生活好!
  • 千淘万漉虽辛苦,吹尽狂沙始到金。为每一个不懈奋斗的高考学子加油!
  • 胜日寻芳泗水滨,心情快乐又缤纷。无边光景一时新,因为开心陪在身。等闲识得东风面,好似挚友做着伴。万紫千红总是春,只为美好不离分。让快乐美好时时相伴,祝你天天幸福如意。
  • 美好的生命应该充满期待、惊喜和感激。
  • 人生匆匆,讨厌的人就一笑而过,无须怀恨在心,保持一颗童心你会发现:没有解决不了的事,也没有过不去的坎。
  • 放下紧张与畏惧带上信心和细致心无旁骛笔下生风。
  • 任何人生建议,都是老生常谈。那些你听不进去的老话,总有一天会让你感慨万千。
  • 圣诞老人是哪家快递的?活了十多年都没收到,差评。
  • 没有谁能左右你的情绪,只有你自己不放过自己,不要再熬夜了,谁心里没有故事,只是学会了控制。
  • 不管生活有多少颠沛流离,我都希望自己能慢慢成为一个,波澜不惊、处事不慌张的人。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

和烨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值