您的位置:首页 > 编程语言 > Java开发

Java集合-ArrayList和LinkedList

2016-05-05 17:20 399 查看
ArrayList比较简单,实现结构是数组,不多说,网上一大堆。

LinkedList的特性不说了,自己看源码,贴出来一个牛逼的添加源码,LinkedList在指定位置添加一个元素的源码:

public void add(int index, E element) {
checkPositionIndex(index);

if (index == size)
linkLast(element);
else
linkBefore(element, node(index));
}

Node<E> node(int index) {
// assert isElementIndex(index);

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;
}
}

/**
* Inserts element e before non-null Node succ.
*/
void linkBefore(E e, Node<E> succ) {
// assert succ != null;
final Node<E> pred = succ.prev;
final Node<E> newNode = new Node<>(pred, e, succ);
succ.prev = newNode;
if (pred == null)
first = newNode;
else
pred.next = newNode;
size++;
modCount++;
}


逻辑自己看!!!

只说一点,不管index是靠前,还是靠后,都是找到该位置后面的node节点,然后在其前面添加node节点!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: