第二十一单元 List、数据结构
课程目标
- 掌握数据结构的特点
- 掌握List集合的使用
- 掌握ArrayList集合的使用
- 熟悉LinkedList集合的使用
1.数据结构
数据结构是一种数据的组织和存储形式。数据结构包含的内容:逻辑关系、应用在数据存储的、封装了对应的操作的一些列元素的集合。
1.1数据结构概述
1.2栈
栈:Stack,又叫做堆栈,他是运算受限的线性表。其限制是只允许在线性表的一端进行操作(插入、删除),不允许在其他任何位置进行操作。
特点:
- 先进后出
- 入口和出口都是在栈的顶端位置
名词:
压栈:往栈里面存放一个元素,存放在栈顶位置
弹栈:取元素,从栈顶取一个元素
1.3队列
队列,也叫对queue,运算受限的线性表,其限制是只允许在表的一端进行插入操作,在表的另一端进行删除操作。
特点:
- 先进先出
- 一端进行插入操作,一端进行删除操作
1.4数组
数组,Array,是一组有序的元素列,是在内存里面开辟的一片连续的存储空间。门牌号。
特点:
- 增删慢查询快
增加元素:创建新数组,将原数组里面的元素按照索引存储到新数组,再在指定位置添加元素
删除元素:创建新数组,将原数组剩下的元素,按照顺序复制到新数组里面
1.5链表
链表:LinkedList,由一系列的节点node组成,节点包含两部分数据和指针,存储数据的时候,数据存储在节点的数据位置,指针指向下一个节点。节点可以动态生成。
特点:
- 多个节点之间通过地址相关联
- 增删元素快:
增加元素只需要修改链接下个元素的地址即可
删除元素只需要修改链接下个元素的地址
1.6红黑树
二叉树:binary tree每个节点不超过2的有序树,左边的成为“左子树”,右边的叫做“右子树”
红黑树是一种特殊的二叉查找树
特点:
查找快,趋近平衡树,查找叶子元素最少和最多不超过2倍
2.List集合
接口 List,有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
2.1List接口特点
- 元素存取有序的集合
- 元素可以重复
- 一个带有索引的集合
2.2List常用方法的使用
boolean add(E e)
- 向列表的尾部添加指定的元素(可选操作)。
E get(int index)
- 返回列表中指定位置的元素。
E remove(int index)
- 移除列表中指定位置的元素(可选操作)。将所有的后续元素向左移动(将其索引减 1)。返回从列表中移除的元素。
int size()
- 返回列表中的元素数。如果列表包含多于 Integer.MAX_VALUE 个元素,则返回 Integer.MAX_VALUE。
set(int index, E element)
- 用指定元素替换列表中指定位置的元素(可选操作)。
3.List的子类
3.1ArrayList集合
数组,增删慢,查找快
不要一味的使用ArrayList
3.2LinkedList集合
List 接口的链接列表实现(双向链表),增删快,查找慢
特有方法
- public void addFirst(E e)将指定元素插入此列表的开头。
- public void addLast(E e)将指定元素添加到此列表的结尾。
- public E getFirst()返回此列表的第一个元素。
- public E getLast()返回此列表的最后一个元素。
- public E poll()获取并移除此列表的头(第一个元素)