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屬性