线性结构
- 数组:连续内存空间存储相同类型的数据,通过索引快速访问元素,时间复杂度为 $O(1)$。适用于读多写少的场景。
- 链表:由节点组成,每个节点包含数据和指向下一个节点的指针。插入和删除操作高效,时间复杂度为 $O(1)$,但随机访问效率低,时间复杂度为 $O(n)$。
- 栈:后进先出(LIFO)的数据结构,所有操作在栈顶进行。Java中可使用 `java.util.Stack` 或 `java.util.Deque` 接口的实现类(如 `ArrayDeque`)。
- 队列:先进先出(FIFO)的数据结构,元素在队尾入队,队头出队。Java中可使用 `java.util.Queue` 接口的实现类(如 `LinkedList` 和 `ArrayDeque`)。
树形结构
- 二叉树:每个节点最多有两个子节点的树结构,常用于实现二叉搜索树。
- 平衡树(如AVL树、红黑树):通过自平衡机制保持树的高度平衡,确保操作的时间复杂度为 $O(log n)$。
- 堆:一种特殊的完全二叉树,用于实现优先队列,支持快速获取最大(或最小)元素。
集合
- Set:不包含重复元素的集合。Java中常见的实现有 `HashSet`(基于哈希表,无序存储)、`TreeSet`(基于红黑树,自动排序)和 `LinkedHashSet`(保持插入顺序)。
映射
- Map:存储键值对的数据结构。Java中常见的实现有 `HashMap`(基于哈希表,允许 null 键和值)、`TreeMap`(基于红黑树,键自动排序)和 `LinkedHashMap`(保持插入顺序或访问顺序)。
图
- 图:由顶点和边组成的结构,表示对象之间的关系。Java标准库没有直接提供图的数据结构,但可以通过邻接表或邻接矩阵自定义实现。