1.linkedList特点
1.1 linkedList底层实现双向链表和双端队列
linkedList中维护两个属性first和last,分别指向首节点和尾节点
每个节点(Node对象),里面维护了prev、next、item三个属性,其中通过prev指向前一个,通过next指向后一个节点。最终实现双向链表。
1.2 可添加任意元素,包括null
1.3 线程不安全,没有实现同步
2. CRUD增删改查
C creat
R read
U update
D delete
2.1 添加第一个元素
linkedList linkedList = new linkedList();
public linkedList() {}
2. 这时linkedList的属性 first = null, last = null
3. 执行添加
public boolean add(E e) {
linkLast(e);
}
void linkLast(E e) { final Nodel = last; final Node newNode = new Node<>(l, e, null); //Node (pre, element, next) last = newNone; if (l == null) first = newNone; else l.next = newNode; size++; modCount++; }
如果是添加第一个节点,则last = null,first和last都将指向newNode
如果非第一个节点,则,last指向新节点
4.删除
remove(); //删除第一个节点 remove(int index); //删除索引节点 remove(Object o); //删除对象节点 removeFirst(); //删除第一个节点
删除 *** 作中的函数嵌套
remove() {
removeFirst(){
unlinkFirst()//真正实现删除的函数
}
}
5.ArrayList和linkedList比较
ArrayList查改 *** 作方便(随机访问),linkedList增删 *** 作方便(顺序访问)。程序中大部分使用的是查询 *** 作,因此大部分情况下会选择ArrayList.
5.1 线程安全问题:ArrayList和linkedList是线程不安全的,单线程或者不涉及并发的程序中可以使用。
6.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)