LinkedList 的雙向鏈表存儲數據 底層源碼分析

 1 class MyLinkedList<E> {
 2 
 3     int size = 0;//集合元素的個數
 4 
 5     Node<E> first;//指向第一個元素
 6     Node<E> last;//指向最後一個元素
 7 
 8     //元素
 9     private static class Node<E> {
10         E item;//元素核心
11         Node<E> prev;//元素頭部
12         Node<E> next;//元素尾部
13 
14         Node(Node<E> prev, E item,Node<E> next) {
15             this.item = item;
16             this.prev = prev;
17             this.next = next;
18         }
19     }
20 
21     //集合添加元素操做
22     public boolean add(E e) {
23         linkLast(e);
24         return true;
25     }
26 
27     //集合添加元素邏輯(雙向鏈表)
28     private void linkLast(E e) {
29         //局部常量l指向此時的最後一個元素
30        final Node<E> l = last;
31        // 經過l實參,使加入的新元素newNode其頭部指向集合的最後那個元素
32         Node newNode = new Node(l, e, null);
33         //將新元素newNode標記爲最後一個元素
34         last = newNode;
35         if (l == null) {//若是爲true,說明newNode是集合中添加的第一個元素
36             //將newNode標記爲第一個元素
37             first = newNode;
38         } else { //不然,就把倒數第二個元素的尾部指向最後一個元素
39             l.next = newNode;
40         }
41         size++;
42     }
43 
44 }
相關文章
相關標籤/搜索