Java 集合框架之 List 全面解析(从概念到实践)

List 概念与继承关系

List 是 Java 集合框架中的接口,继承自 Collection 和 Iterable,定义线性表的核心特性:元素有序、允许重复、支持按位置操作。

继承关系图示

Collection 接口核心方法

以下为 Collection 中需重点掌握的方法:

方法 功能说明 示例场景
int size() 返回集合元素个数 判断列表是否为空
boolean add(E e) 添加元素 向列表尾部插入数据
boolean remove(Object o) 删除指定元素 移除特定值
boolean contains(Object o) 检查元素是否存在 验证是否包含某对象
void clear() 清空集合 重置列表

List 专属方法

List 扩展了基于下标的操作,核心方法分类如下:

增删改查方法

  • void add(int index, E e):在指定位置插入元素
  • E remove(int index):删除并返回指定位置的元素
  • E set(int index, E e):修改指定位置元素
  • E get(int index):获取指定位置元素

工具方法

  • List<E> subList(int from, int to):截取子列表(视图,与原列表数据联动)
  • int indexOf(Object o):返回元素首次出现的下标

注意事项

  • subList 返回的是原列表的视图,修改子列表会影响原列表。
  • remove 方法重载:remove(int index) 按位置删除,remove(Object o) 按值删除。

List 实现类与基础使用

List 需通过实现类实例化,常用实现类包括:

  • ArrayList:基于动态数组,适合随机访问。
  • LinkedList:基于双向链表,适合频繁增删。

实例化示例

java 复制代码
List<String> arrayList = new ArrayList<>();  // 数组实现
List<String> linkedList = new LinkedList<>(); // 链表实现

完整使用示例

java 复制代码
List<String> list = new ArrayList<>();
list.add("A");          // 尾部添加
list.add(1, "B");       // 指定位置插入
String item = list.get(0);  // 获取元素
list.set(0, "C");       // 修改元素
list.remove(1);         // 按位置删除
boolean exists = list.contains("A");  // 检查存在性

总结

  1. 接口特性 :List 是有序、可重复的线性表接口,继承自 Collection。
  2. 核心操作:支持通过下标进行增删改查,提供子列表视图等工具方法。
  3. 实现类选择 :ArrayList 适合查询,LinkedList 适合频繁增删。

下期将深入分析 ArrayList 与 LinkedList 的底层实现及性能差异。

相关推荐
2601_962106642 小时前
【Java Set综合实战】商品管理系统 + 图书收藏系统|Product、Book自定义类全套代码
java
RuoyiOffice2 小时前
SpringBoot+Vue3 凭证生命周期设计:审核、过账、冲销与反过账怎样保持账目一致
java·spring boot·事务·springboot3·财务系统·会计凭证·ruoyi office
2601_962106643 小时前
HashMap入门|工号-姓名键值存储、两种遍历方式、根据key/value查
java
杨凯凡3 小时前
Spring Framework 7 API 版本管理实战:请求头路由、兼容迁移与废弃策略
java·rest api·springframework·spring boot 4·api版本管理
T_Wizard4 小时前
同一个问题写了 4 遍:官方 SDK / HTTP / Spring AI / LangChain4j,到底该选哪个
java·ai编程
hai_android4 小时前
AudioTrack 深度解析:从原理到实战
android·java·kotlin
斯维赤4 小时前
限流、熔断、降级,你真的分得清吗?
java·后端·架构
2601_967987375 小时前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
aiks_yuan7 小时前
Java CPU 100% 怎么排查:JDK 11 起 jstack 自带线程 CPU 时间,不用再 top -H 换算十六进制(JDK 8、11、17 实测)
java
Flynn Liang8 小时前
AiServices 源码级拆解:一个接口如何变成 RAG Agent
java·langchain·源码分析·rag·langchain4j·aiservices