LinkedList实现

1、实现方式

  LinkedLIst是基于双向链表实现的 ,所谓的双向链表就是集合中每个元素对象都知道其前一个对象和后一个对象的位置。在LinkedList中,是以一个内部的Entry对象来代表集合中的元素,其中元素的值会赋值给对象的element属性,next属性指向后一个元素,previous指向前一个元素,基于这样的机制可以实现原速度的移动。

 LinkedList()

 在创建LinkedList对象的时候,首先会创建一个element为null ,next为null,previous为null的Entry对象,在执行构造函数的时候,LinkedList会将header的next及previous都指向header,并赋值给全局的header属性,已形成双向链表的闭环。

2、添加元素 add(E)

当向其添加元素的时候,首先会创建一个Entry对象 并将Entry对象的next书香指向header,previous指向header.previous,在完成自己next、previous的设置后,同时将位于当前元素后一个元素的previous指向自己,将当前元素的前一个元素next指向自己。

3,、删除元素 remove(E)

删除元素同样会遍历LinkedList,寻找到匹配的元素之后 ,会将其element、next、previous设置为null完成的对象的删除 ,不比像ArrayList那样复制删除位置之后元素向前移动一位。

4、获得元素get(int index)

由于LinkedList的元素并没有放在数组里,所以在获得元素的时候,会比ArrayList获得的方式要复杂,首先要判断传人的index值是否大于0或者是大于等于当前集合的大小,如果符合会抛出IndexOutOfBoundsException,否则,首先会判断传入的值是否小于集合的一半,如果小于,会从前向后遍历找到对应位置的next元素,若果大于则正好相反的操作。

4包含元素 contains(E)

采用方式是遍历所有的元素,如果传入为null,如找到null的元素就返回true ,否则返回false ,如果传入的不是null,则会equals 如果找到equals的元素返回true,否则返回false。

5、总结

LinkedList是基于双向链表实现的。

添加元素的时候,必须创建一个Entry对象,并切换相应元素的前后元素引用,在查找时候需遍历链表。删除元素的时候也要遍历表,并将相应元素的属性都是设置为null。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

飓风zj

感谢打赏,thanks

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

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

打赏作者

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

抵扣说明:

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

余额充值