Java中LinkedList和ArrayList的效率分析
作者:柳落青 发布时间:2023-02-12 06:21:55
标签:Java,LinkedList,ArrayList
在 Java 中,LinkedList 和 ArrayList 的性能是不同的,具体取决于你所需要的操作。
对于频繁的插入和删除操作,LinkedList 的性能通常更好,因为它使用了链表数据结构,只需更改节点的指针就可以在链表中插入或删除元素。
然而,如果你需要频繁的随机访问操作,ArrayList 的性能更快,因为它使用了数组数据结构,可以通过索引访问任何元素。
下面是一个代码案例,展示了在 Java 中使用 LinkedList 和 ArrayList 进行插入和删除操作的时间差异。
package com.example.springbootpf4jservice;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
public class ListPerformanceTest {
public static void main(String[] args) {
List<Integer> arrayList = new ArrayList<>();
List<Integer> linkedList = new LinkedList<>();
Random rand = new Random();
// 用随机整数填充列表。
for (int i = 0; i < 100000; i++) {
int num = rand.nextInt();
arrayList.add(num);
linkedList.add(num);
}
// 测量在每个列表的开头插入元素所需的时间。
long startTime = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
arrayList.add(0, rand.nextInt());
}
long endTime = System.currentTimeMillis();
System.out.println("ArrayList insert time: " + (endTime - startTime) + "ms");
startTime = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
linkedList.add(0, rand.nextInt());
}
endTime = System.currentTimeMillis();
System.out.println("LinkedList insert time: " + (endTime - startTime) + "ms");
}
}
测试结果:
第一次:
第二次:
第三次:
来源:https://blog.csdn.net/S0001100/article/details/128962060
0
投稿
猜你喜欢
- 1、JDBCJDBC 就是 数据库开发 操作的 代名词,因为只要是现代商业项目的开发那么一定是离不开 数据库 的,不管你搞的是什么,只要是想
- springboot整合mybatis实现数据库更新批处理1.在mapper接口中编写方法/** * 修改book表中的销量和库存
- 1. 新建TestServlet类package com.yanek.test;import java.io.IOException;imp
- Interface Segregation Principle,ISP接口隔离原则主张使用多个专门的接口比使用单一的总接口要好。一个类对另外
- 前言:我们每天都在编写Java代码,编译,执行。很多人已经知道Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.cl
- 微服务通过Feign调用进行密码安全认证在项目中,微服务之间的通信也是通过Feign代理的HTTP客户端通信,为了保护我们的业务微服务不被其
- 1 需求描述我们现在要干一个什么事情呢,我们要在浏览器输入一个请求地址,然后我们的后端就给我返回一个User对象即可,并且我希望以Json的
- 本文实例为大家分享了Java分页展示的具体代码,供大家参考,具体内容如下先上图吧,大致如图,也就提供个思路(ps:使用了SSH框架) 前台J
- 循环队列结构队列特点队列为一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,
- package GraphicsCanvas;import java.awt.BorderLayout;import java.awt.Ca
- 本文以实例阐述了C++中形参与实参的区别,有助于读者加深对于C++形参与实参的认识。形参出现在函数定义中,在整个函数体内都可以使用, 离开该
- 我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其
- 可以给已有实体类动态的添加字段并返回新的实体对象,不影响原来的实体对象结构。添加依赖<dependency> &n
- 本文实例讲述了Java链表(Linked List)基本原理与实现方法。分享给大家供大家参考,具体如下:在分析链表之前,我们先来对之前的动态
- Spring框架的关键组件是面向方面编程(AOP)框架。面向方面的编程不仅打破程序逻辑分成不同的部分称为所谓的担忧。跨越多个点的应用程序的功
- 本文实例为大家分享了Java实现统计字符串出现次数的具体代码,供大家参考,具体内容如下需求:健盘录入一个字符串,要求统计字符串中每个字符串出
- Java设计模式的模板方法模式定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步
- 1.新建springBoot项目在前面有两种方式2.加入thymeleaf模板引擎SpringBoot推荐使用thymeleaf模板引擎语法
- 本文实例讲述了Android游戏开发学习之引擎用法。分享给大家供大家参考。具体如下:汽车引擎是汽车的心脏,其决定了汽车的性能和稳定性,是人们
- 树的同构备忘!定义:给定两棵树r1、r2,如果r1可以通过若干次的左子树和右子树互换,使之与r2完全相同,这说明两者同构。举例树的构造树可以