java数据结构2------深入学习LinkedList

目录

一、概念

二、源码分析

1、属性

2、节点结构

3、常用方法

①get(int index)  

②add(E e)

③set(int index, E element)

④remove(int index)

三、总结


一、概念

LinkedList 是一种基于链表的集合,用双向链表实现的,提供了高效的插入和删除操作。

二、源码分析

java数据结构2------深入学习LinkedList_第1张图片

1、属性

first表示第一个节点
last表示最后一个节点

2、节点结构

java数据结构2------深入学习LinkedList_第2张图片

每一个节点记录了当前节点、上一个 节点、下一个节点。

3、常用方法

①get(int index)  
        //先判断在双向链表的前半段,还是后半段,然后找对应index

        if (index < (size >> 1)) {
            Node x = first;
            for (int i = 0; i < index; i++)
                x = x.next;
            return x;
        } else {
            Node x = last;
            for (int i = size - 1; i > index; i--)
                x = x.prev;
            return x;
        }

前面讲过ArrayList的底层是数组,可以直接通过index得到结果,所以查询效率上ArrayList更快

②add(E e)

LinkedList只需要在链表最后加一个节点,而ArrayList由于底层是数组,在空间不足时要扩容,所以添加元素LinkedList效率高

③set(int index, E element)

查询index对应的节点,将这个节点的item改为传入的element

④remove(int index)

查询index对应的节点,将前一个节点与后一个节点连接

三、总结

LinkedList 基于双向链表实现的,节点地址是任意的,所以不用开辟内存空间连续的地址,LinkedList 在插入、删除操作时效率优于ArrayList,查询则ArrayList更快。

你可能感兴趣的:(数据结构,java,数据结构,学习)