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。
相关推荐
ss2732 分钟前
致Java初学者的一封信
java·开发语言
white-persist2 分钟前
【vulhub spring CVE-2018-1270】CVE-2018-1270 Spring Messaging 远程命令执行漏洞 完整复现详细分析解释
java·服务器·网络·数据库·后端·python·spring
潇洒畅想10 分钟前
1.1 从∑到∫:用循环理解求和与累积
java·数据结构·python·算法
维齐洛波奇特利(male)32 分钟前
@Pointcut(“execution(* com.hdzx..*(..))“)切入点与aop 导致无限循环
java·开发语言
色空大师32 分钟前
【日志文件配置详解】
java·logback·log4j2·日志
迷藏49442 分钟前
**发散创新:基于角色与属性的混合权限模型在微服务架构中的实战落地**在现代分布式系统中,
java·python·微服务·云原生·架构
码以致用1 小时前
Java垃圾回收器笔记
java·jvm·笔记
暴力袋鼠哥1 小时前
基于springboot与vue的ai多模态数据展示看板
java·spring boot
用户8307196840821 小时前
VS Code Java开发配置与使用经验分享
java·visual studio code