1.线性表的特征:
(1)第一个数据元素没有前驱,这个元素称为头结点
(2)最后一个数据元素没有后继,这个元素称为尾结点
(3)除了第一个和最后一个元素外,其他数据元素有且仅有一个前驱和一个后继
2.线性表分类:线性表中数据存储方式可以是顺序存储,也可以是链式存储,按照数据存储方式不同,可以吧线性表分为顺序表和链表。
顺序表:在计算机内存中以数组的形式保存的线性表,即用一组地址连续地存储单元,依次存储线性表的各个元素,使得线性表中逻辑上相邻的元素在物理上也相邻。
ArrayList的底层是一种顺序表,使用数组实现,同样提供了增删改查以及扩容等功能
常用方法:
(1)add (Object element):在末尾插入指定元素
(2)add(int index, Object element): 在指定位置插入指定元素
(3)remove(int index):删除列表中指定位置的元素,并返回被删元素
(4)remove(Object element): 删除集合中第一次出现的指定元素,成功返回true,否则返回false
(5)set(int index, Object element): 将索引i位置元素替换为元素element并返回被替换的元素
(6)contains(Object element) :判断元素是否存在(如果列表包含指定的元素,则返回 true)
(7)indexOf(Object element):获取指定元素索引
(8)get(int index):根据索引获取元素
(9)isEmpty(): 判断是否为空
(10)size():返回列表中的元素个数
(11)clear(): 从列表中移除所有元素
单向链表:由多个结点组成,每个结点都由一个数据域和一个指针域组成,数据域用来存储数据,指针域用来指向后继结点,链表的头结点不存储数据,指针域指向第一个真正存储数据的结点。
双向链表:由多个结点组成,每个结点都由一个数据域和两个指针域组成,数据域用来存储数据,一个指针域用来指向其前驱结点,另一个指针域用来指向后继结点,链表的头结点不存储数据,指向前驱结点的指针域值为null,指向后继节点的指针域指向第一个真正存储数据的结点。
LinkedList是一个双向链表,它也可以被当作堆栈、队列或双端队列进行操作
常用方法:
(1)add (Object element):在链表后添加一个元素
(2)add (int index,Object element):在指定位置插入一个元素
(3)push(Object element):与addFirst方法一致
(4)offer(Object element):在链表尾部插入一个元素
(5)remove():移除链表中第一个元素
(6)remove(Object element):移除链表中指定元素
(7)pop():和removeFirst方法一致,删除头
(8)poll():查询并移除第一个元素
(9)get(int index):按照下标获取元素
(10)peek():获取第一个元素,但是不移除