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

235. Java 集合 - 深入理解 Collection 扩展 —— List 接口 - 指南

文章目录

  • 235. Java 集合 - 深入理解 Collection 扩展 —— List 接口
  • List 接口的两个关键特性
  • 简单示例
  • List 接口的主要实现类
  • ❓ 该选 `ArrayList` 还是 `LinkedList`?
      • 为什么 ArrayList 通常更快?
      • 什么时候用 LinkedList 更合适?
  • ️ 示例对比:ArrayList vs LinkedList
      • 1. ArrayList 示例
      • 2. LinkedList 示例
  • ️ 总结:选型建议

235. Java 集合 - 深入理解 Collection 扩展 —— List 接口

在 Collection 框架中,List 是一个非常重要的子接口,它在基本集合(Collection)之上,带来了两大核心增强功能:


List 接口的两个关键特性

  1. 元素顺序有保障
    • List 中,元素的顺序永远是确定的!
    • 遍历时,元素的顺序和它们被添加的顺序一致。
  2. 元素有索引(Index)
    • List 中的每个元素都有一个整型索引(从0开始),可以通过索引高效地访问和操作元素。

简单示例

import java.util.List;
public class ListDemo {
public static void main(String[] args) {
List<String> fruits = List.of("Apple", "Banana", "Cherry");System.out.println("First element: " + fruits.get(0));  // AppleSystem.out.println("Second element: " + fruits.get(1)); // Bananafor (int i = 0; i < fruits.size(); i++) {System.out.println("fruits[" + i + "] = " + fruits.get(i));}}}

输出

First element: Apple
Second element: Banana
fruits[0] = Apple
fruits[1] = Banana
fruits[2] = Cherry

List 接口的主要实现类

Java标准库提供了两个常用的 List 实现:

实现类底层结构特点
ArrayList动态数组(Array查询快,增删慢(需要移动元素)
LinkedList双向链表(Doubly Linked List插入删除快(前后指针调整),查询慢

❓ 该选 ArrayList 还是 LinkedList

大多数情况下,推荐默认使用 ArrayList
原因如下:

为什么 ArrayList 通常更快?

  • 现代硬件(CPU缓存技术)让数组的访问非常高效。
  • 访问元素时,ArrayList连续内存,可以快速定位并加载数据。
  • 相比之下,LinkedList 在遍历时需要不断指针跳转(Pointer Chasing),容易产生缓存未命中(Cache Miss,导致访问速度慢。

什么时候用 LinkedList 更合适?

虽然 ArrayList 通常更快,但在某些场景下,LinkedList 仍然有优势:

这些操作在 LinkedList 中只需修改指针,效率非常高,而在 ArrayList 中需要整体移动元素。


️ 示例对比:ArrayList vs LinkedList

1. ArrayList 示例

import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();list.add("one");list.add("two");list.add("three");System.out.println(list.get(1)); // 快速读取索引1的元素}}

特点:快速随机访问,但在开头插入或删除元素会比较慢(需要移动后续元素)。


2. LinkedList 示例

import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
LinkedList<String> queue = new LinkedList<>();queue.addFirst("first");queue.addLast("last");System.out.println(queue.removeFirst()); // 快速移除第一个元素}}

特点:快速头尾操作,适合实现队列或栈结构。


️ 总结:选型建议

场景建议实现
需要频繁按索引访问元素ArrayList
需要频繁在开头或末尾插入/删除元素LinkedList
绝大多数常规场景优先选择 ArrayList

一句话记忆

“遍历、随机访问选 ArrayList,头尾操作选 LinkedList。”

http://www.rkmt.cn/news/81252.html

相关文章:

  • 2025精选:包头至三亚线路最受欢迎的五家租车公司电话,租车需要多少钱精选实力品牌 - 品牌推荐师
  • 2025广东咖啡设备销售公司TOP5评测!广州奇豆咖啡领衔优选品牌榜,全链路赋能+精品生态权威榜单发布,专业服务重构咖啡商业价值 - 全局中转站
  • 2025年国产垂直度测试仪/密封测试仪生产厂家有哪些?哪个厂家好?垂直度测试仪/密封测试仪推荐厂商企业选购指南 - 品牌推荐大师1
  • 事倍功半是蠢蛋66 docker的服务名解析机制
  • 2025广东咖啡零售公司TOP5 评测!广州奇豆咖啡领衔优质品牌榜,品质引领 + 全链路服务,赋能咖啡生活新体验 - 全局中转站
  • 2025微生物限度检测仪哪个型号好?哪家好?品牌对比口碑推荐 - 品牌推荐大师1
  • 报警器哪家的质量好?哪家品牌的售后服务优?求推荐 - 工业推荐榜
  • 2025年防爆吸尘装置供应商权威推荐榜单:防爆吸尘机/粉尘防爆集尘机/移动式防爆集尘器源头厂家精选 - 品牌推荐官
  • 2025年年终北京债务纠纷律师推荐:全行业服务经验与客户评价横评,附不同纠纷复杂度下的10位可靠人选清单 - 品牌推荐
  • 依赖倒转原则
  • 2025年南京牙齿正畸医院排名前十强推荐,牙齿露根修复/口腔牙齿种植/牙齿即刻种植/牙齿黑洞修复/全口牙周治疗牙齿正畸推荐排行怎么选择 - 品牌推荐师
  • 2025年最新国内10大权威专业BBS论坛精选,全部可注册可访问 - 品牌推荐大师1
  • 首创者认证机构如何选择更靠谱?2025年年终最新服务商评测与2家权威机构推荐 - 品牌推荐
  • WTAPI框架微信二次开发文档:高稳定社群管理
  • 2025 年宁波北仑仓库公司最新推荐:深度剖析行业领先企业的实力亮点宁波北仑仓库推荐这五家公司! - 品牌鉴赏师
  • 深入解析:Mysql主从架构的搭建
  • 2025年五大不错的气密仪器厂家排行榜,气密仪器来图定制+正 - 工业品牌热点
  • 2025年十大铌酸锂定制厂家排行榜,新测评精选高纯度铌酸锂推 - mypinpai
  • 2025年上海中小企业财税服务口碑排行榜,聚焦宝园财税口碑与 - myqiye
  • 如何打开pyqt6的辅助设计工具designer
  • 使用New-IsoFile将文件夹创建IOS文件
  • 2025年房车专用锂电池厂家/加工厂/生产厂排行榜,口碑推荐 - 工业品牌热点
  • 技术驱动下的精准布局:上海 GEO 优化服务商全景解析与优选指南 - 品牌评测官
  • 2025 年 12 月倾角传感器厂家权威推荐榜:上海高精度倾角传感器/倾角传感器,工业级稳定监测与智能姿态感知核心之选 - 品牌企业推荐师(官方)
  • JAVA入门
  • cookie token sessionid之间有什么关系
  • 地方产投集团数字化平台建设实战:从内控管理到决策赋能(璞华公开课第5期活动回顾)
  • 2025年12月河南美术高考培训机构综合实力推荐 - 深度智识库
  • 2025宝宝学坐椅制造厂TOP5权威推荐:甄选儿童坐椅生产商 - 工业品牌热点
  • Vue浅响应式如何解除深层响应式的性能问题?适用场景有哪些?