当前位置: 首页 > wzjs >正文

西安网站建设系统开发南昌地宝网招聘信息网最新招聘

西安网站建设系统开发,南昌地宝网招聘信息网最新招聘,疫苗最新官方消息,怎样看网站建设制作方LinkedList 集合LinkedList 是一个基于双向链表实现的集合类LinkedList 实现了以下接口: List : 表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。Deque :继承自 Queue 接口,具有双端队列的特…

LinkedList 集合

LinkedList 是一个基于双向链表实现的集合类

LinkedList 实现了以下接口:

  • List : 表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。
  • Deque :继承自 Queue 接口,具有双端队列的特性,支持从两端插入和删除元素,方便实现栈和队列等数据结构。
  • Cloneable :表明它具有拷贝能力,可以进行深拷贝或浅拷贝操作。
  • Serializable : 表明它可以进行序列化操作,也就是可以将对象转换为字节流进行持久化存储或网络传输。

public class LinkedList extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, java.io.Serializable  {// 列表大小transient int size = 0;/*** Pointer to first node.* Invariant: (first == null && last == null) ||* (first.prev == null && first.item != null)* 列表的头节点*/transient Node<E> first;/*** Pointer to last node.* Invariant: (first == null && last == null) ||* (last.next == null && last.item != null)* 列表的尾节点*/transient Node<E> last;// 根据索引获取节点Node<E> node(int index) {// assert isElementIndex(index);// 索引index < size/2 则从前往后遍历if (index < (size >> 1)) {// 获取到头节点Node<E> x = first;for (int i = 0; i < index; i++)x = x.next;return x;} else {// 获取尾节点Node<E> x = last;for (int i = size - 1; i > index; i--)x = x.prev;return x;}}private static class Node<E> {E item; // 当前节点Node的值Node<E> next; // 当前节点的下一个节点NodeNode<E> prev; // 当前节点的上一个节点NodeNode(Node<E> prev, E element, Node<E> next) {this.item = element;this.next = next;this.prev = prev;}}/*** 获取列表长度*/public int size() {return size;}// 初始化LinkedListpublic LinkedList(Collection<? extends E> c) {this();addAll(c);}/*** 在列表头部 增加新的节点*/public void addFirst(E e) {linkFirst(e);}/*** Links e as first element.* 在列表的头节点插入新的元素*/private void linkFirst(E e) {// f = 头节点final Node<E> f = first;// 创建一个新节点, e的前节点为null,下个节点为ffinal Node<E> newNode = new Node<>(null, e, f);// 将头节点设置为新节点first = newNode;// f 标记的头节点为空,则证明当前列表是空的if (f == null)// 列表为空 尾节点last=newNodelast = newNode;else// 否则,原头节点 prev 指向新节点f.prev = newNode;// 长度 + 1size++;// 变化值 + 1modCount++;}/*** 在列表尾部 增加元素*/public void addLast(E e) {linkLast(e);}/*** Links e as last element.* 在列表的尾节点插入新元素*/void linkLast(E e) {final Node<E> l = last;final Node<E> newNode = new Node<>(l, e, null);last = newNode;if (l == null)first = newNode;elsel.next = newNode;size++;modCount++;}/*** Inserts element e before non-null Node succ.* 在指定的节点前插入新的元素* e 新元素* succ 插入到目标* 将 e 元素 插入到 succ 节点之前*/void linkBefore(E e, Node<E> succ) {// assert succ != null;// succ 节点的 前节点final Node<E> pred = succ.prev;// 新建一个节点e 前节点(succ的前节点), 后节点(succ节点)final Node<E> newNode = new Node<>(pred, e, succ);// succ 的前节点 成为 新节点esucc.prev = newNode;// succ.prev为空,则说明succ节点为头节点if (pred == null)// 将头结点改为新节点efirst = newNode;else// 若非头节点,则 succ的前节点 现在 指向 新节点epred.next = newNode;size++;modCount++;}// 删除头节点public E removeFirst() {final Node<E> f = first;if (f == null)throw new NoSuchElementException();return unlinkFirst(f);}/*** 删除头节点*/private E unlinkFirst(Node<E> f) {// assert f == first && f != null;// 头节点的值final E element = f.item;// 头节点的下个节点final Node<E> next = f.next;f.item = null;f.next = null; // help GC// 新的头结点为 原头节点的nextfirst = next;// next为空 则 列表只有一个元素,删除后则为空if (next == null)// 尾节点为空last = null;else// 将原头结点的下个节点prev变为null,next.prev = null;size--;modCount++;return element;}/*** 删除尾节点*/public E removeLast() {final Node<E> l = last;if (l == null)throw new NoSuchElementException();return unlinkLast(l);}/*** Unlinks non-null last node l.* 删除尾节点*/private E unlinkLast(Node<E> l) {// assert l == last && l != null;final E element = l.item;final Node<E> prev = l.prev;l.item = null;l.prev = null; // help GClast = prev;if (prev == null)first = null;elseprev.next = null;size--;modCount++;return element;}// 删除节点E unlink(Node<E> x) {// assert x != null;final E element = x.item;final Node<E> next = x.next;final Node<E> prev = x.prev;// prev==null 则 x为头节点if (prev == null) {first = next;} else {// 将x的上个节点的指针,指向x下个节点prev.next = next;// 将x的前指针变为null 便于GC回收x.prev = null;}// next==null 则 x为尾结点if (next == null) {// 新尾结点= x节点的上一个节点last = prev;} else {// 将x的下个节点的前指针指向,x的上个指针next.prev = prev;// 将x的下个指针设置为null 便于GC回收x.next = null;}// x的值设置为null  便于GC回收x.item = null;size--;modCount++;return element;}// 获取头节点值public E getFirst() {// f=获取头结点final Node<E> f = first;if (f == null)throw new NoSuchElementException();// 头结点的值=f.itemreturn f.item;}// 获取为节点值public E getLast() {// 获取尾节点final Node<E> l = last;if (l == null)throw new NoSuchElementException();// 尾节点值return l.item;}// 判断列表是否存在指定元素opublic boolean contains(Object o) {return indexOf(o) != -1;}// 根据元素查找索引, 没有则为-1public int indexOf(Object o) {int index = 0;if (o == null) {for (Node<E> x = first; x != null; x = x.next) {// 判断元素值是否为nullif (x.item == null)return index;index++;}} else {for (Node<E> x = first; x != null; x = x.next) {// 判断元素的值是否为 oif (o.equals(x.item))return index;index++;}}return -1;}// 清空列表public void clear() {// 从头节点开始遍历for (Node<E> x = first; x != null; ) {// 获取下个节点信息Node<E> next = x.next;// 全部设置为nullx.item = null;x.next = null;x.prev = null;// 将下个节点赋值给xx = next;}// 头结点  尾结点 均设置为nullfirst = last = null;// 列表长度设置为 0size = 0;modCount++;}// 判断 index 索引是否越界private void checkPositionIndex(int index) {// 判断 index 索引是否越界if (!isPositionIndex(index))// 越界后打印说明throw new IndexOutOfBoundsException(outOfBoundsMsg(index));}// 判断 index 索引是否越界private boolean isPositionIndex(int index) {return index >= 0 && index <= size;}// 越界后打印说明private String outOfBoundsMsg(int index) {return "Index: "+index+", Size: "+size;}// 迭代器private class ListItr implements ListIterator<E> {// 上一次调用 next() 或 previous() 方法的节点private Node<E> lastReturned;private Node<E> next; // 下个节点private int nextIndex; // 下一个节点的索引// 判断链表是否被其他线程修改过private int expectedModCount = modCount;ListItr(int index) {// assert isPositionIndex(index);// index==size 则表示next是尾节点next = (index == size) ? null : node(index);nextIndex = index;}// 判断是否尾尾结点public boolean hasNext() {return nextIndex < size;}// 获取下一个节点public E next() {// 判断列表是否发生了修改 (modCount 与 记录的expectedModCount是否一致)checkForComodification();if (!hasNext())throw new NoSuchElementException();// 当前节点lastReturned = next;// 下个节点next = next.next;// 下个节点的索引nextIndex++;// 当前节点的值valuereturn lastReturned.item;}// 判断下个节点是否越界public boolean hasPrevious() {return nextIndex > 0;}public E previous() {// 检查列表是否发生修改checkForComodification();// 判断下个节点的索引是否 > 0if (!hasPrevious())throw new NoSuchElementException();// 若当前节点的下个节点为空 则设置为尾结点 lastReturned = next = (next == null) ? last : next.prev;nextIndex--;return lastReturned.item;}public int nextIndex() {return nextIndex;}public int previousIndex() {return nextIndex - 1;}public void remove() {checkForComodification();if (lastReturned == null)throw new IllegalStateException();Node<E> lastNext = lastReturned.next;unlink(lastReturned);if (next == lastReturned)next = lastNext;elsenextIndex--;lastReturned = null;expectedModCount++;}public void set(E e) {if (lastReturned == null)throw new IllegalStateException();checkForComodification();lastReturned.item = e;}public void add(E e) {checkForComodification();lastReturned = null;if (next == null)linkLast(e);elselinkBefore(e, next);nextIndex++;expectedModCount++;}final void checkForComodification() {if (modCount != expectedModCount)throw new ConcurrentModificationException();}}
}

文章转载自:

http://aAAIWwpR.kqgLp.cn
http://qGIKIaWp.kqgLp.cn
http://wOUbSaxJ.kqgLp.cn
http://uOa4cecA.kqgLp.cn
http://Uoo9UN0P.kqgLp.cn
http://s01ehcsS.kqgLp.cn
http://OXQgnw1g.kqgLp.cn
http://0YJ4NE51.kqgLp.cn
http://k0GLg7G5.kqgLp.cn
http://27G4weZK.kqgLp.cn
http://NN3LAPU2.kqgLp.cn
http://EiJbwClF.kqgLp.cn
http://OlJnVGom.kqgLp.cn
http://X3MAqpsK.kqgLp.cn
http://0woWZXV8.kqgLp.cn
http://t0uemWbj.kqgLp.cn
http://tJsw30dA.kqgLp.cn
http://R1VobAze.kqgLp.cn
http://ZYyQUtA3.kqgLp.cn
http://PcPeOc8t.kqgLp.cn
http://lxvbVdOi.kqgLp.cn
http://VuK2iHF7.kqgLp.cn
http://GOxcfSXv.kqgLp.cn
http://8Ycm3vLd.kqgLp.cn
http://59kznwhD.kqgLp.cn
http://ZCI3t3ZU.kqgLp.cn
http://a80Kr0PL.kqgLp.cn
http://B10e8X5C.kqgLp.cn
http://Kgafbmbi.kqgLp.cn
http://UVqZRtJD.kqgLp.cn
http://www.dtcms.com/wzjs/655114.html

相关文章:

  • 网站怎么做二级页面建设企业网站综合考虑
  • 购物网站开发代码网站的维护工作内容
  • 零成本做网站如何完成seo优化
  • 网站建设免费按词收费公司注册要求
  • 网站开发语言怎么查织梦后台怎么做网站地图
  • 济南做网站需要多少钱网站建设电子合同模板
  • 知名网站建设多少钱网站建设百度百科
  • 做厂房出租有那些推广网站小程序商城的好处
  • 免费建站绑定域名网站后台流程图
  • 桂林户外论坛seo网站优化方案案例
  • 中山网站建设文化机构icp备案综合查询网站
  • 那种登录才能查看的网站怎么做优化网站开发 软文
  • 东莞企业网站建设设计网页设计与网站建设郑州大学
  • 手机 登录asp网站网站成功案例怎么做
  • 正规的高端网站制作公司提升wordpress速度
  • 网站制作咨询网站建设贝尔利
  • 官方网站建设账务处理乌兰察布网站建设
  • 唯品会 一家专门做特卖的网站茶叶网站策划书
  • 网站开发工资淄博网络运营商有几家
  • 图标不显示wordpress长沙专业seo优化推荐
  • 一个成功的网站必须具备陕西省交通建设网站
  • 电子商务网站建设 臧良运 好不好桌面上链接网站怎么做
  • 网站主页设计收费大气ppt模板
  • 网站美工襄阳网站建设
  • 西安哪家网站建设公司好电子商务企业网站的基本功能
  • 网站建设结构设计电子商务平台系统
  • 广丰网站seo天动力网站开发
  • 加强网站建设 基本措施iis网站重定向设置
  • 政务公开与网站建设工作总结存在问题和困难近三天时政热点
  • 网站免费网站app价格低的手机