Java源码之LinkedList

  似乎我们在工作中很少用到LinkedList,大部分都是使用ArrayList。先来看一下LinkedList的定义吧,它是List和Deque接口的双向链表实现;实现所有可选列表操作,并允许所有元素(包括null);所有的操作都实在操作双向列表;索引到列表中的操作将从开始或结束遍历列表,以更接近指定的索引为准。从这个义来看,这个LinkedList更适合较多插入和删除元素,较少读取元素,因为插入和删除元素不涉及重排数据。

  至于Deque是什么。Deque是支持两端元素插入和移除的线性集合,而名称deque是双端队列(double ended queue)的缩写,通常发音为deck。既然它是个列表,那它确实继承了Queue,也支持所有与Queue相关的进、出方法。本文不再对deque做详细说明。

  为什么叫List常用方法,因为LinkedList是双向队列,包含队列操作,这节不予说明。下面列出了add、remove、get这三个常用方法。从前两个方法可以看到它用到了上节介绍的核心方法;而get方法可以看到是一个遍历搜索的方法,可以明显的发现如果这个列表的get方法在使用中频繁出现,那么我们应该选择ArrayList而不是LinkedList。

  下面列出了peek、poll、offer、push、pop这五个常用方法。peek方法直接返回头节点,poll方法等同于第三节介绍的unlinkFirst方法,offer方法最终等同于linkLast,push方法等同于addFirst方法,而addFirst方法实际上等同于第三节介绍的linkFirst方法,pop方法最终等同于unlinkFirst。peek、poll、offer这三个方法实现了队列这一先入先出的数据结构,而push、pop这两个方法实现了栈这一先入后出的数据结构。

  本文只介绍几个常用的方法,实际上LinkedList中包含了很多其他方法,例如:addFirst、addLast、removeLast、offerFirst、offerLast等等,实际上都是由本文第三节介绍的核心方法扩展或者仅仅是改了名字,有兴趣的同学可以详细学习一下,我这里就不详细介绍了。

加入电报群

【江湖人士】(jhrs.com)原创文章,作者:江小编,如若转载,请注明出处:https://jhrs.com/2017/1231.html

扫码加入电报群,让你获得国外网赚一手信息。

文章标题:Java源码之LinkedList

(0)
江小编的头像江小编
上一篇 2017-11-09 15:08
下一篇 2017-11-09 15:08

热门推荐

Leave a Reply

Sending

国外老牌便宜域名服务商Namecheap注册com域名大优惠,抢到就赚到,优惠码:NEWCOM698
$5.98/年
直达官网