Java进阶小妙招:ArrayList和LinkedList的"相爱相杀"

一、核心概念

ArrayList基于动态数组,查询快增删慢;LinkedList基于双向链表,增删快查询慢,俩都是List接口实现类,日常开发高频用。

二、关键语法&代码示例

  1. 初始化与基础操作
java 复制代码
// ArrayList初始化
List<String> arrayList = new ArrayList<>();
arrayList.add("Java");
arrayList.add("进阶");
// 随机访问(优势)
System.out.println(arrayList.get(0)); // 直接通过索引获取,速度快

// LinkedList初始化
List<String> linkedList = new LinkedList<>();
linkedList.add("链表");
linkedList.add("数组");
// 首尾操作(优势)
((LinkedList<String>) linkedList).addFirst("头部");
((LinkedList<String>) linkedList).removeLast();
  1. 性能对比核心场景
java 复制代码
// 1. 随机查询对比
long start1 = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
    arrayList.get(i); // 耗时短,O(1)
}
long end1 = System.currentTimeMillis();

long start2 = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
    linkedList.get(i); // 耗时长,O(n)
}
long end2 = System.currentTimeMillis();

System.out.println("ArrayList查询耗时:" + (end1 - start1) + "ms");
System.out.println("LinkedList查询耗时:" + (end2 - start2) + "ms");

三、核心总结

  • 查多改少用ArrayList,随机访问是强项;
  • 增删频繁用LinkedList,首尾操作效率高;
  • 俩都线程不安全,并发场景需加锁或用CopyOnWriteArrayList。
相关推荐
超级大只老咪7 小时前
数组相邻元素比较的循环条件(Java竞赛考点)
java
小浣熊熊熊熊熊熊熊丶7 小时前
《Effective Java》第25条:限制源文件为单个顶级类
java·开发语言·effective java
毕设源码-钟学长7 小时前
【开题答辩全过程】以 公交管理系统为例,包含答辩的问题和答案
java·eclipse
啃火龙果的兔子7 小时前
JDK 安装配置
java·开发语言
星哥说事7 小时前
应用程序监控:Java 与 Web 应用的实践
java·开发语言
派大鑫wink7 小时前
【JAVA学习日志】SpringBoot 参数配置:从基础到实战,解锁灵活配置新姿势
java·spring boot·后端
xUxIAOrUIII8 小时前
【Spring Boot】控制器Controller方法
java·spring boot·后端
Dolphin_Home8 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
醇氧8 小时前
org.jetbrains.annotations的@Nullable 学习
java·开发语言·学习·intellij-idea
Java&Develop8 小时前
Aes加密 GCM java
java·开发语言·python