LinkedList:
  public boolean add(E e) {
linkLast(e);
return true;
}
void linkLast(E e) {
//last为当前集合的最后一个元素的指针位置元素,并且将其赋值给名称为l的node对象
final Node<E> l = last;
//初始换一个新的node对象,传入的参数有 l:同上 e:传入的需要存入的数据对象
final Node<E> newNode = new Node<>(l, e, null);
//将新传入的数据的对象赋值给当前集合的最后指针元素
last = newNode;
//如果l为空(表示当前集合长度为零)
if (l == null)
//新创建的node对象放在集合的第一位
first = newNode;
else
//如果l对象不为空则把新创建的node对象赋值给l对象中的node类型的next对象
l.next = newNode;
//集合长度
size++;
//修改次数
modCount++;
}

Node<E>为集合中的内部静态类:

    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;
this.prev = prev;
}
}

当调用集合add方法传入需要存放的数据时:

  1、先把last(last是当前集合的最后一个元素,如果集合的长度为空,last则为null)赋给名称为l的node对象。

  2、创建一个新的node对象,用来存放新的数据元素,同时通过带参构造把存入之前集合中的最后一个元素与之建立联系,将之前的最后一个元素赋给新创建的node对象的prev属性。

  3、将存入的数据元素设置为当前集合中的最后一个元素

  4、如果当前集合长度为空,则设置当前存入的元素为第一个元素,否则赋给存入之前的最后一个元素的next属性

最新文章

  1. android知识杂记(三)
  2. AngularJS 源码分析1
  3. iOS 百度地图监听地图状态
  4. Java中的注释
  5. c专家编程---优先级规则
  6. UIImageView帧动画相关属性和方法
  7. Azure IoT 技术研究系列4-Azure IoT Hub的配额及缩放级别
  8. 个人作业3--------个人总结(Alpha版本)
  9. 数值函数ROUND(四舍五入),TRUNC(不四舍五入),MOD
  10. Android调试错误-No resource identifier found for attribute &#39;showAsAction&#39;
  11. (NO.00003)iOS游戏简单的机器人投射游戏成形记(十八)
  12. python爬虫项目(scrapy-redis分布式爬取房天下租房信息)
  13. NLog配置分享
  14. uboot 如何向内核传递参数
  15. ftp服务器搭建(离线安装vsftpd),配置
  16. windows系统定时重启自定义exe程序
  17. JS操作Cookies的小例子
  18. [翻译]Event Handler Description 事件处理描述
  19. Android的存储方式
  20. Android 混淆完全解析

热门文章

  1. 系统装更新补丁出现“正在此计算机上搜索更新”,有时等待N长时间也没有反应
  2. 显示 Mac隐藏的文件夹 命令语句
  3. 【BZOJ2242】[SDOI2011] 计算器(数学模板三合一)
  4. 谭浩强 c++程序设计第一章课后习题 第10题
  5. 博学谷-数据分析numpy
  6. SAP事件 Event Flow(转载)
  7. 37.VUE学习之-表单的综合运用
  8. 科学计算库Numpy——文件读写
  9. A计划 hdu2102(BFS)
  10. 关于欧几里德算法(gcd)的证明