java 您所在的位置:网站首页 list集合底层 java

java

2023-03-10 10:25| 来源: 网络整理| 查看: 265

双向链表

解析

1.首先要知道linkedList的一个内部类Node对象,这个对象有三个属性,分别是item:要存储的值,next:下一个元素,prev:上一个元素。

private 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.1可以自己创建一个Node节点对象,玩一下node节点的如何连接。

class Node { public T obj; public Node next; public Node pre; public Node(T obj) { this.obj = obj; } @Override public String toString() { return "Node{" + "obj=" + obj + '}'; } }

1.2测试代码,创建三个node节点,将每个节点相连接,形成一种链式结构。

Node XM = new Node("小明"); Node ZS = new Node("张三"); Node LS = new Node("李四"); // 让每个node节点的下一个节点指向下一个对象 XM.next = ZS; ZS.next = LS; // 每个节点的上一个指向 LS.pre = ZS; ZS.pre = XM; Node first = new Node("First"); Node last = new Node("Last"); first = XM; // 根据首元素遍历 while (true) { if (first == null) { break; } System.out.println(first); first = first.next; } System.out.println("==================pre================="); last = LS; while (true) { if (last == null) { break; } System.out.println(last); last = last.pre; } // 讲小红插入张三和李四之间 /** * 1.将张三的下一个元素指向小红 * 2.将小红的下一个元素指向李四 * 3.将小红的上一个元素指向张三 * 4.将李四的上一个元素指向小红 */ Node XH = new Node("小红"); ZS.next = XH; XH.next = LS; XH.pre = ZS; LS.pre = XH; System.out.println("==========小红插入后============="); first = XM; // 根据首元素遍历 while (true) { if (first == null) { break; } System.out.println(first); first = first.next; } System.out.println("==================pre================="); last = LS; while (true) { if (last == null) { break; } System.out.println(last); last = last.pre; }

2.linkedList集合初始化后会创建一个空集合此时内部的三个属性,size为0,first和last属性为null。

/** * Constructs an empty list. */ public LinkedList() { }

3.当集合进行第一次add操作时,真正做的是将最后一个元素和新添加的元素相连接,此时集合的last属性为null,则元素e既是first又是last元素。

/** * Links e as last element. */ void linkLast(E e) { final Node l = last; final Node newNode = new Node(l, e, null); last = newNode; if (l == null) first = newNode; else l.next = newNode; size++; modCount++; }

4.当集合第二次进行add操作时,会直接将last属性作为新元素的上一个元素,此时新元素则为集合的last元素,此时的l不为空,则将l的下一个元素指向新元素。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有