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


猜你喜欢
- 我们知道,在 Python 里面,如果你要运行一段 JavaScript,你可以使用execJS这种第三方库。那么在 Golang 里面,你
- Apache提供的commons-fileupload jar包实现文件上传确实很简单,最近要用Servlet/JSP做一个图片上传功能,在
- 一、简介二、代码/activityLifeCycle_3Screen/AndroidManifest.xml<manifest xml
- /* * Copyright 2012-2013 The Haohui Network Cor
- 项目结构:运行效果:========================================================下面是代
- 本文实例讲述了C#简单创建和删除目录的方法。分享给大家供大家参考。具体如下:using System;using System.IO;cla
- 实践过程效果代码public partial class Form1 : Form {
- 像ipconfig /all 这样的CMD命令想必大家都知道,但是很多童鞋可能不知道怎么写这样的控制台带参数的程序,其实很简单,我们先看建立
- 使用POI读写Word doc文件 Apache poi的hwpf模
- 本文所要介绍的简易天气App主要用RxAndroid、MVP、Retrofit实现,首先来看看效果:主页内容:右侧栏天气列表:左侧栏城市列表
- 本文以实例形式演示了C#虚方法的声明与使用。实例内容主要包括:演示虚方法的声明和使用,定义虚方法进而求几何面积,用虚方法求原始图形的面积、正
- 关联篇:HandlerThread 使用及其源码完全解析关联篇:Handler内存泄漏详解及其解决方案一说到Android的消息机制,自然就
- 小米系统自带的长截屏应该很多人都用过,效果不错。当长截屏时listview就会自动滚动,当按下停止截屏时,就会得到一张完整的截屏。该篇就介绍
- 最长公共子序列(Longest Common Subsequence)定义:两个或多个已知数列的子序列集合中最长的就是最长公共子序列。其实说
- DataSet 对象是支持 ADO.NET的断开式、分布式数据方案的核心对象 ,用途非常广泛.我们很多时候需要使用其中的数据,比如取得一个D
- 一、什么是 websocket 接口使用 websocket 建立长连接,服务端和客户端可以互相通信,服务端只要有数据更新,就可以主动推给客
- 本文实例讲述了Android编程绘图操作之弧形绘制方法。分享给大家供大家参考,具体如下:/** * 绘制弧形图案 * @descriptio
- 这篇文章主要介绍了Java TreeSet类的简单理解和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 本文和大家一起写一个Android图片轮播控件,供大家参考,具体内容如下1. 轮播控件的组成部分 我们以
- sqlite是啥?1、一种轻型数据库2、关系型数据库3、占用资源很低,几百K内存,适合嵌入式设备4、支持windows、linux、unix