java-浅学LinkedList

java-浅学LinkedList

LinkedList

LinkedList 的底层就是一个链表线性结构,链表除了要有一个节点对象外,根据单向链表和双向链表的不同,还有一个或者两个指针。 LinkedList属于双向链表。

  • LinkedList 继承了 AbstractSequentialList 类。
  • LinkedList 实现了 Queue 接口,可作为队列使用。
  • LinkedList 实现了 List 接口,可进行列表的相关操作。
  • LinkedList 实现了 Deque 接口,可作为队列使用。
  • LinkedList 实现了 Cloneable 接口,可实现克隆。
  • LinkedList 实现了 java.io.Serializable 接口,即可支持序列化,能通过序列化去传输。

add()和push()方法

通过这两种方法均可对LinkedList进行元素添加,但不同点在于add是在链表后面添加一个元素,而push是在链表前面 添加一个元素,这是添加顺序上的区别。

get()方法

  • get(int index):按照下边获取元素
  • getFirst():获取第一个元素
  • getLast():获取最后一个元素

remove 、pop、poll移除方法

  • remove();移除链表中第一个元素;
  • remove(int index):移除链表中指定位置的元素;
  • removeFirst():移除链表中第一个元素,与remove类似;
  • removeLast():移除链表中最后一个元素;
  • boolean remove(Object o):移除链表中指定的元素;
  • boolean removeFirstOccurrence(Object o):移除链表中第一次出现所在位置的元素;
  • boolean removeLastOccurrence(Object o):移除链表中最后一次出现所在位置的元素;
  • pop():与removeFirst一样,实际上它就是removeFirst;
  • poll():查询并移除第一个元素;

与ArrayList的区别

在生产开发中我们更多的是使用ArrayList,ArrayList与LinkedList的区别如下:

ArrayList

  • 基于数组,需要连续内存
  • 随机访问快(指根据下标访问)
  • 尾部插入,删除性能可以,其他部分的插入和删除因为会移动数据,导致性能较低
  • 可以利用cpu缓存,局部性原理

LinkedList

  • 基于双向链表,无需连续内存
  • 随机访问慢(因为要沿着链表进行遍历搜索)
  • 头尾插入删除的性能高,中间的插入删除性能不如ArrayList,因为查找消耗了大量的时间
  • 占用内存多(因为采用的是链表结构,需要创建两个指针和一个节点)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值