本系列使用 Java 语言完整讲解数据结构内容前面已经铺垫两章前置内容而本篇作为正式内容开篇将从抽象层面讲清楚 List线性表的定义、特性、分类区别抽象概念和具体实现为后续顺序表和链表打下基础。文章目录前言一.什么是线性表(Linear List)?二.常见的方法三.List的使用总结前言作为一名软工在读大学生我知道很多新手刚开始学习 Java 集合时直接上手 ArrayList顺序表和 LinkedList链表是比较不容易的而且在 Java 语言中来说List 是一个接口不是具体的数据结构。很多人会把 List 和 ArrayList 混为一谈这也是如果记忆不那么清晰在面试中会出错的点。本系列从底层原理入手先用 Java 手写每一种数据结构再加上个人学习中的心得做到知其然也知其所以然。一.什么是线性表(Linear List)?线性表是零个或多个相同类型数据元素的有限序列。它继承于 Collection。而 Collection 也是一个接口该接口中规范了后续容器中常用的一些方法具体如下所示Iterable 也是一个接口表示实现该接口的类是可以逐个元素进行遍历的具体如下站在数据结构的角度来看List 就是一个线性表即 n 个具有相同类型元素的有限序列在该序列上可以执行增删改查以及遍历等操作。二.常见的方法可以看到 List 所包含的方法极多但较为常用的如下图这些方法以及实现会在后面的博客中一一提及。三.List的使用最需注意的是List 是个接口并不能直接用来实例化。如果要使用必须去实例化 List 的实现类。在集合框架中ArrayList顺序表和 LinkedList链表都实现了 List 接口。具体使用参考后面的博客本篇仅作为开头引入。总结本篇厘清了线性表与 Java List 接口的关系线性表是数据结构的抽象模型而java.util.List是 JDK 中定义线性表行为的接口不能直接 new 对象。ArrayList和LinkedList是 List 接口的两大实现分别对应顺序表与链表两种存储方案。后续章节会手写代码分别讲解两种实现的底层原理、代码实现与时间复杂度。
