1、数组
int[] a = new int[10];
优点:下标访问速度快
遍历数组速度快
缺点:数组固定大小后,不能扩容
增删操作效率慢
只能存储一种数据类型
2、链表
Linked
优点:不需要初始化容量,可随意扩容。
增删速度快,修改节点指向即可。
缺点:指定位置删除,需要遍历到当前位置,才能执行删除。
查找元素效率低,需全链表遍历。
使用指针域,空间占用大。
单向链表:当前节点指向下一个节点,循环直到无下一个节点。
双向链表:当前节点指向下一个节点、下一个节点指向上一个节点;循环直到无下一个节点。双向链表占用的空间更大,对于单向链表来说,实现了以空间换时间的作用。
环单向链表:最后一个节点的下一个节点指向第一个节点。
环双向链表:最后一个节点的下一个节点指向第一个节点;第一个节点的上一个节点指向最后一个节点。
3、跳表
链表的升级用法,redis的有序集合就是用跳表实现的。
变相实现二分查询。
用分层来实现点定位。总层数(n+1/2)。相隔一个点分一层,当前层超过三个数据则新建一层。
4、树
二叉树:顶级节点有左右子节点。
平衡二叉树:左右树的高度一致。
完全二叉树:节点从左往右依次加满,则为完全二叉树。
满二叉树:平衡二叉树,也是完全二叉树,最底层子节点必须全满。
红黑树
B+树
B树
5、栈
后进先出,可用于倒序输出。
6、队列
先进先出,可用于正序输出。
7、散列表
8、堆
用于topK的排序算法。
大顶堆
小顶堆
9、图