首页 >

分享ArrayList中的几个常用方法的源码

Java|java教程分享ArrayList中的几个常用方法的源码
LinkedList,源码,方法
Java-java教程
jdk1.7.0_79
数学题库系统源码,vscode换编译器,ubuntu拍摄视频,tomcat发布项目很卡,爬虫搜盘,php数据库操作代码,seo专员需要什么优势,整形美容医院类企业网站织梦模板,discuz首页模板在哪里lzw
  上文里解析了有关ArrayList中的几个常用方法的源码——《有关ArrayList常用方法的源码解析》,本文将对LinkedList的常用方法做简要解析。
易语言远程监控源码,vscode 码折叠,ubuntu终端如何调整显示,tomcat监控服务,w32sqlite,楼层导航插件,js如何使用前端框架,肺炎数据爬虫清洗,php过滤标签,seo多久能学会,土巴兔 网站源码,网页打印控件下载,帝国多端模板的,特效专题页面,数据库 学生学籍管理系统,小程序如何创建集卡活动lzw
  LinkedList是基于链表实现的,也就是说它具备了链表的优点和缺点,随机访问慢、插入删除速度快。既然是链表,那么它就存在节点数据结构,也不存在容量大小的问题,来一个在尾部添加一个。
3a源码论坛,vscode图标没了,centos 替代ubuntu,sts加tomcat,力控 sqlite,企业站服务器,手机日历桌面插件下载,前端框架的御剑,爬虫申请画布,php培训短期班,搜索引擎seo优化公司,织梦高端大气网站模板,网页怎么取消漂浮窗口,素材下载网站模板,后台静态页面模板,php开发商户管理系统,霍夫变换检测圆程序lzw
//LinkedList$Nodeprivate static class Node {    E item;    Node next;    Node prev;    Node(Node prev, E element, Node next) {this.item = element;this.next = next;this.prev = prev;    }}
  第一个默认不带参数的构造方法,构造一个空链表。

//1.LinkedList,默认构造方法public LinkedList() {}
  第二个构造方法能把一个集合作为一个参数传递,同时集合中的元素需要是LinkedList的子类。

//2.LinkedList,能将一个集合作为参数的构造方法public LinkedList(Collection c) {this();    addAll(c);}
  两个构造方法都比较简单,接下来看元素的插入及删除等方法。

public boolean add(E e) {    linkLast(e);    //将元素添加到链表尾部return true;}
//LinkedList#linkLastvoid linkLast(E e) {final Node l = last;    //链表尾指针引用暂存final Node newNode = new Node(l, e, null);    //构造新节点last = newNode;    //将链表的尾指针指向新节点if (l == null)    //此时为第一次插入元素first = newNode;elsel.next = newNode;        size++;    //链表数据总数+1modCount++;    //modCount变量在《有关ArrayList常用方法的源码解析》提到过,增删都会+1,防止一个线程在用迭代器遍历的时候,另一个线程在对其进行修改。}
  学过《数据结构》的同学相信看到链表的操作不会感到陌生,接着来看看删除指定位置的元素remove(int)方法。

//LinkedList#removepublic E remove(int index) {    checkElementIndex(index);    //检查是否越界 index >= 0 && index <= sizereturn unlink(node(index));    //调用node方法查找并返回指定索引位置的Node节点}
//LinkedList#node,根据索引位置返回Node节点Node node(int index) {if (index > 1)) {    //size >> 1 = size / 2,如果索引位于链表前半部分,则移动fisrt头指针进行查找Node x = first;for (int i = 0; i < index; i++)            x = x.next;return x;    } else {    //如果索引位于链表后半部分,则移动last尾指针进行查找Node x = last;for (int i = size - 1; i > index; i--)            x = x.prev;return x;    }}
  查找到index位置的Node后,调用unlink方法摘掉该节点。

//LinkedList#unlink,一看即懂E unlink(Node x) {// assert x != null;final E element = x.item;final Node next = x.next;final Node prev = x.prev;if (prev == null) {        first = next;    } else {        prev.next = next;        x.prev = null;    }if (next == null) {        last = prev;    } else {        next.prev = prev;        x.next = null;    }    x.item = null;    size--;    modCount++;return element;}
  从代码中就能看出LinkedList和ArrayList两者的优缺点,由于只涉及简单的链表数据结构,所以不再对其他方法进行解析。


分享ArrayList中的几个常用方法的源码
  • ArrayList、LinkedList与Vector三者有什么区别
  • ArrayList、LinkedList与Vector三者有什么区别 | ArrayList、LinkedList与Vector三者有什么区别 ...

    分享ArrayList中的几个常用方法的源码
  • java中ArrayList与LinkedList有什么区别
  • java中ArrayList与LinkedList有什么区别 | java中ArrayList与LinkedList有什么区别 ...

    分享ArrayList中的几个常用方法的源码
  • java面试之Arraylist和Linkedlist的区别
  • java面试之Arraylist和Linkedlist的区别 | java面试之Arraylist和Linkedlist的区别 ...