String[ ] 和 List<String> 的区别

今天在开发的时候,碰到一个业务场景,要给不同的标题,赋予不同的颜色(固定浅色系)。

一、基本概念

项目 String[] List<String>
类型 数组(Array) 集合(Collection)
所在包 Java 基础类型(无须导包) java.util.List
大小 固定长度 可动态增删
存储 连续内存块 由 List 接口 + 动态数组或链表实现
主要实现类 无(数组是原生类型) ArrayList, LinkedList
定义方式 String[] arr = {"A", "B"}; List<String> list = Arrays.asList("A", "B");new ArrayList<>()
可变性 长度固定、元素可改 长度可变、元素可改(可增删)

二、示例对比

1. 定义方式

复制代码
// 数组
String[] colorsArray = {"red", "blue", "green"};

// List
List<String> colorsList = new ArrayList<>();
colorsList.add("red");
colorsList.add("blue");
colorsList.add("green");

2. 添加元素

复制代码
// ❌ 数组长度固定,不能直接添加
colorsArray[3] = "yellow"; // 报错:数组越界

// ✅ List 可以随时添加
colorsList.add("yellow");

3. 删除元素

复制代码
// ❌ 数组不能删除,只能手动创建新数组
String[] newArray = Arrays.copyOf(colorsArray, colorsArray.length - 1);

// ✅ List 直接删除
colorsList.remove("blue");

4. 遍历方式

两者都能用增强 for 循环:

复制代码
for (String color : colorsArray) { ... }
for (String color : colorsList) { ... }

5. 转换方式

数组 → List

复制代码
String[] arr = {"A", "B", "C"};
List<String> list = Arrays.asList(arr); // 注意:返回的 List 长度固定

List → 数组

复制代码
List<String> list = List.of("A", "B", "C");
String[] arr = list.toArray(new String[0]);

6. 内存与性能

  • 数组:固定大小、连续内存,性能略高;

  • List :更灵活,但底层可能会自动扩容(尤其是 ArrayList),开销稍高。


三、使用建议

场景 推荐使用
数据数量固定、不需要增删 String[]
需要频繁添加、删除、修改元素 List<String>
要与 Stream、Collections 等工具类配合 List<String>
要节省内存、追求性能极限 String[](比如算法题)

四、快速总结一句话

String[] 是固定长度的容器,性能高但死板;
List<String> 是可变长度的集合,灵活强大、现代开发首选。

相关推荐
会编程的土豆19 分钟前
【数据结构与算法】堆排序
开发语言·数据结构·c++·算法·leetcode
会编程的土豆21 分钟前
【数据结构与算法】希尔排序
数据结构·c++·算法·排序算法
汀、人工智能36 分钟前
[特殊字符] 第73课:打家劫舍
数据结构·算法·数据库架构·图论·bfs·打家劫舍
江奖蒋犟1 小时前
【C++】map和set
开发语言·数据结构·c++·set·map
汀、人工智能1 小时前
[特殊字符] 第78课:乘积最大子数组
数据结构·算法·数据库架构·数组·前缀积·乘积最大子数组
汀、人工智能1 小时前
[特殊字符] 第41课:翻转二叉树
数据结构·算法·数据库架构·图论·bfs·翻转二叉树
汀、人工智能1 小时前
[特殊字符] 第46课:验证二叉搜索树
数据结构·算法·数据库架构·图论·bfs·验证二叉搜索树
计算机安禾1 小时前
【数据结构与算法】第33篇:交换排序(二):快速排序
c语言·开发语言·数据结构·数据库·算法·矩阵·排序算法
汀、人工智能2 小时前
[特殊字符] 第50课:最大路径和
数据结构·算法·数据库架构·图论·bfs·最大路径和
Access开发易登软件2 小时前
在 Access 中实现 Web 风格 To Do List
前端·数据结构·microsoft·list·vba·access·access开发