public Object get(intindex) { //首先检查index是否合法...此处不显示这部分代码 Entry e = header; //开始节点 //向前或者向后查找,具体由哪一个方向距离较 //近决定 if (index < size/2) { for (int i = 0; i <= index; i++) e = e.next; } else { for (int i = size; i > index; i--) e = e.PRevious; } return e; } 把元素插入列表很简单:找到指定索引的节点,然后紧靠该节点之前插入一个新节点:
public void add(int index, Object element) { //首先检查index是否合法...此处不显示这部分代码 Entry e = header; //starting node //向前或者向后查找,具体由哪一个方向距离较 //近决定 if (index < size/2) { for (int i = 0; i <= index; i++) e = e.next; } else { for (int i = size; i > index; i--) e = e.previous; } Entry newEntry = new Entry(element, e, e.previous); newEntry.previous.next = newEntry; newEntry.next.previous = newEntry; size++; } 线程安全的LinkedList和其他集合