栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA--集合--LinkedList

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA--集合--LinkedList

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 Node l = 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.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/672960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号