星空网 > 软件开发 > Java

LinkedList深入学习

  • 实现方法


首先LinkedList继承了AbstractSequentialList实现了List<E>, Deque<E>, Cloneable, java.io.Serializable接口

LinkedList深入学习

LinkedList是一种常用的list实现,他是基于双向链表(双向链表:集合中的每一个元素都知道其前一个元素和后一个元素的位置)来实现的,在LinkedList中,用一个内部的Entity类来代表集合中的元素,元素的值赋给element属性,Entity中的next属性指向元素的后一个元素,Entity中的previous属性指向元素的前一个元素,基于这样的机制能够实现快速的移动集合中的元素。

  • 构造方法


在创建LinkedList对象时候,首先创建一个element为null,next为null,previous为null的entity对象,并赋值给全局的header属性

LinkedList深入学习

LinkedList深入学习

在执行构造器的时候,LinkedList将head的next及previous都指向header,以形成双向链表所需要的闭环    

LinkedList深入学习

 

 

  • 插入对象:add(E)


每次通过add方法增加元素的时候,要做的就是创建一个Entity对象,并将这个Entity的next指向header,previous指向head.previous,在完成自己的next、previuos的设置后,同时将位于当前元素的后一元素的previous指向自己,并将位于当前元素的前一元素的next指向自己,这样就保持了双向链表的闭环。

LinkedList的add方法不像ArrayList那样,要考虑扩容以及复制数组的问题,但是每增加一个元素,都会创建一个新的Entity对象,并修改相邻的两个元素的属性

LinkedList深入学习

 

  • 删除对象:remove(E)


要删除LinkedList中的一个元素,首先同样遍历整个集合中的元素,遍历和寻找元素的方法和ArrayList基本相同,寻找到之后删除就比ArrayList简单多了。

删除的时候,值需要直接删除链表上的当前元素,并将当前元素中的element、previous、next设置为空,并不需要移动元素的位置

LinkedList深入学习

  • 获取单个对象:get(index)


LinkedList的元素不是存储在数组中的,所以他的get操作过程比ArrayList复杂,在执行get操作时,首先判断传入的index值是否小于0或大于等于当前LinkedList的size值,,不符合则抛出越界异常;如符合条件,判断当前获取的位置是否小于LinkedList值的一般,如果小于,则从头一直找到index位置对应的元素,大于则从尾部往前查找

LinkedList深入学习

  • 遍历对象:iterator()


Iterator方法由父类的AbsttractList实现,当调用此方法的时候,每次都会创建一个ListItr对象,创建时候该对象符合保存cursor位置

LinkedList深入学习

  • 判断对象是否存在:contains(E)


为了判断元素是否存在与集合中,采用的方法是遍历所有元素,如果传入的值为null,则找到为null的元素,传入值为非null,则使用equals进行判断,找到则返回true
LinkedList深入学习

  • 注意要点


    • LinkedList是基于双向链表的机制实现的
    • LinkedList是非线程安全的
    • LinkedList执行插入元素的时候,会创建一个Entity对象,并切换相应元素的前后元素的引用,在查找元素的时候,进行遍历链表,删除元素的时候,遍历链表找到删除的元素



原标题:LinkedList深入学习

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

速卖通上线JIT即时发货服务;Shopify与Flexport联手物流合作:https://www.kjdsnews.com/a/1302542.html
东南亚市场如何选品?:https://www.kjdsnews.com/a/1302543.html
2023年的3大亚马逊策略,让你的Listing跳动起来!:https://www.kjdsnews.com/a/1302544.html
外贸网站建设如何提升Pinterest曝光率?不妨试试这4种方法!:https://www.kjdsnews.com/a/1302545.html
国外客户只想跟工厂合作?可以这样破解:https://www.kjdsnews.com/a/1302546.html
跨境电商卖家如何进行谷歌推广?(SEO篇):https://www.kjdsnews.com/a/1302547.html
北京到嵩山自驾游沿途景点 北京距离嵩山有多远:https://www.vstour.cn/a/411244.html
泰国签证有出生地 泰国出生入籍护照:https://www.vstour.cn/a/411245.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流