当前位置: 首页 > news >正文

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> 是可变长度的集合,灵活强大、现代开发首选。

http://www.dtcms.com/a/519394.html

相关文章:

  • el-table默认排序设置
  • 未来之窗昭和仙君(三十二)通用押金系统——东方仙盟筑基期
  • 【工具分享】对比 MeshCentral VNC 部署 与 Apache Guacamole VNC 部署
  • 废品回收小程序盈利密码:三方共赢模式拆解 + 避坑指南
  • ARM《2》_ARM的GNU汇编语言
  • 02_svm_多分类
  • 全面的 C#/.NET 图表构建解决方案
  • 未发表,三大创新!OCSSA-VMD-Transformer-Adaboost特征提取+编码器+集成学习轴承故障诊断
  • Linux网络HTTP(下)(9)
  • 网站权重值在较长时间内是一定的页面优化怎么做批量的网站检查
  • 从“手动填”到“自动识”:营业执照识别技术革新政务体验
  • ArkUI-X跨平台开发之环境搭建
  • 第六部分:VTK进阶(第170章 MPI 分布式渲染与数据并行)
  • 【GESP】C++四级真题 luogu-B4264 [GESP202503 四级] 二阶矩阵
  • Metasploit+Ngrok快速获取Windows Shell
  • 网站 需求文档最近中文字幕视频2019一页
  • Elasticsearch从入门到进阶——搜索引擎原理
  • 【HarmonyOS 6 特别发布】鸿蒙 6 正式登场:功能升级,构建跨设备安全流畅新生态
  • 【论文精读】AIGCBench:AI 图像生成视频(I2V)的全面评估基准
  • 电子病历语料库构建方法与架构项目全计划(2025扩展版)
  • 刷题网站开发19年做网站
  • 网站建设销售外贸企业网站功能要求
  • 设计神经网络的技巧
  • Java 核心知识点查漏补缺(二)
  • wpf之数据类型转换
  • SpringBoot-Web开发之拦截器
  • 计算机网络:网络基础
  • C++学习——类与对象详细知识点总结
  • C primer plus (第六版)第十一章 编程练习第14题
  • 逆变器之逆变原理