
Java LinkedList 源码分析
基于JDK1.8源码分析
西二旗王员外
我的个人笔记,如果有幸对您有帮助,欢迎点赞…………
展开
-
Java之LinkedList源码分析(第十二篇:总结)
0、LinkedList实现了List接口、Deque接口,一个既可以做线性表、又可以做栈、又可以做队列的super容器1、LinkedList的底层数据结构是双向链表,插入与删除的效率很高哦,O(1)就搞定了2、LinkedList查找就没那么利索了,因为没有下标,只能从头或从尾遍历一个一个元素了3、LinkedList的结构public class Link...原创 2020-05-29 20:25:56 · 452 阅读 · 0 评论 -
Java之LinkedList源码分析(第十一篇:查找元素)
(注意:本文源码基于JDK1.8)这些查找元素的方法有个共同特点:只查找出元素,不会删除元素,我们一起分析一下get()方法分析 public E get(int index) { checkElementIndex(index); return node(index).item; }用于获取指定下标的元素,第一个元素的下标为0,传入的参数index表示下标值1、检查传入下标值是否符合范围要求通过checkElem...原创 2020-11-23 17:11:44 · 984 阅读 · 0 评论 -
Java之LinkedList源码分析(第十篇:获取指定元素的下标【位置】)
(注意:本文源码基于JDK1.8) 如果你想知道LinkedList持有的某个元素,它所属的下标是什么?既可以使用indexOf()方法、或者lastIndexOf()方法,那么它们之间的区别是什么呢?一起分析一下indexOf(Object)方法分析 public int indexOf(Object o) { int index = 0; if (o == null) { for (Node<E> ...原创 2020-11-21 19:33:33 · 2796 阅读 · 0 评论 -
Java之LinkedList源码分析(第九篇:迭代器ListItr功能分析)
(备注:本文基于JDK1.8)LinkedList也重写了两个listIterator方法,一个覆盖了父类AbstractList、另一个覆盖AbstractSequentialList这个直接父类,这两个方法都会返回一个ListIterator对象,ListIterator是一个接口,在LinkedList类的内部同样也有一个ListItr类实现了ListIterator接口,两个listIterator()方法实际返回的为ListItr对象,我们一起学习一下ListItr的实现,看看这...原创 2020-11-21 19:24:42 · 596 阅读 · 0 评论 -
Java之LinkedList源码分析(第八篇:修改元素)
无论是LinkedList,还是ArrayList,毕竟他们都表示线性表,所以API一致,只是具体的实现不同!今天学习一下LInkedList的修改元素。原创 2020-09-01 19:26:38 · 1351 阅读 · 0 评论 -
Java之LinkedList源码分析(第七篇:删除元素-Deque接口)
(注意:本文基于JDK1.8,且不含迭代器、清除所有元素的删除方法)Deque接口定义了双端队列具备的能力,截图为Deque接口中定义的移除方法,接下来就分析一下0、原创 2020-11-17 10:23:48 · 695 阅读 · 0 评论 -
Java之LinkedList源码分析(第六篇:删除元素-List接口)
(注意:本文基于JDK1.8)0、remove方法,接受一个int参数 public E remove(int index) { checkElementIndex(index); return unlink(node(index)); }首先将传入的index下标值传入到checkElementIndex方法中(见1号知识点),该方法将检查下标值的范围是否越界,越界时会抛出IndexOutOfBoundsException,下标ind..原创 2020-05-14 11:46:57 · 1397 阅读 · 1 评论 -
Java之LinkedList源码分析(第五篇:结点类)
private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; ...原创 2020-05-11 22:53:23 · 531 阅读 · 0 评论 -
Java之LinkedList源码分析(第四篇:添加元素-Deque接口)
Deque接口扩展了Queue接口,本篇将是以上添加元素的源码分析0、一个参数,接受一个参数类型为E的对象 public void addFirst(E e) { linkFirst(e); }方法内部会调用linkFirst方法(见1号知识点),并将传入的元素对象e传了进去……在linkFirst方法中会完成元素的添加过程1、一个参...原创 2020-05-11 22:37:40 · 670 阅读 · 0 评论 -
Java之LinkedList源码分析(第三篇:添加元素-List接口相关方法分析)
LinkedList的添加方法太多了……,先从List系列开始0、一个参数,接受一个参数类型E的参数 public boolean add(E e) { linkLast(e); return true; }传入的元素对象e,直接被传入到linkLast方法中(见1号知识点),不过最后的返回值一定是true哦……添加元素没失败的...原创 2020-11-12 23:12:35 · 1149 阅读 · 2 评论 -
Java之LinkedList源码分析(第二篇:创建对象)
创建LinkedList对象,从这里开始0、无参 public LinkedList() { }默认的构造方法,是我们最常用的,它只是new了一个对象1、一个参数,接受一个Collection对象 public LinkedList(Collection<? extends E> c) { this(); ...原创 2020-03-23 23:19:59 · 652 阅读 · 0 评论 -
Java之LinkedList源码分析(第一篇:初步了解)
0、LinkedList实现了List、又实现了Deque,而Deque又继承了Queue,所以LinkedList添加元素、删除元素的方法很多很多,LinkedList简直就是全能的一个线性表!底层采用双向链表实现,非线程安全,假设多个线程同时添加元素,那后果就是添加的元素互相覆盖掉………,造成丢失元素………,注意以下角色是LinkedList同时扮演的,你想让LinkedList做什么就做什么...原创 2020-03-23 23:07:50 · 220 阅读 · 0 评论