论list里ArrayList和LinkedList两个集合在一些简单的方法下的时间使用情况

本文通过实验对比了ArrayList与LinkedList在不同操作上的性能表现,并结合数据结构原理分析了两者之间的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Random;


public class Main {
	public static void main(String[] args) throws Exception{
//		ArrayList<Integer> al=new ArrayList<Integer>();
		LinkedList<Integer> al=new LinkedList<Integer>();
		
		
//		for(int i=0;i<1000000;i++) {
//			al.add(i);//输出分别是Array花费了40ms——Linked花费了1000ms
//		}
		
//		for(int i:al) {
//			//Array花费了7ms——Linked花费了15ms
//		}
		
//		Random ra=new Random();//Array花费了650ms——Linked花费了 1770ms
//		int x=0;
//		for(int i=0;i<20000;i++){
//			x=ra.nextInt(10000);
//			int pi=0;
//			for(int num:al) {
//				if(x>num) {
//					al.add(pi,x);
//					break;
//				}
//				pi++;	
//			}
//			if(pi==al.size())
//				al.add(x);
//		}
		
		
		long t1=System.currentTimeMillis();
		long t2=System.currentTimeMillis();
		System.out.println(t2-t1);
	}
}

无论是集合里增加数据增加,还是迭代器遍历,还是迭代器排序,linkedlist都比arraylist慢的多。

时间使用情况表明,对于算法入门级别的人来说,在数据量大,且简单的时候(非项目),大多数情况下,ArrayList都比LinkedList快速的多。

当然在以后做项目的时候,或者真正遇到很复杂的算法问题时,就不清楚了。、

 

 

而根据数据结构里的知识得知:

虽然增删来说,linkedlist要比arraylist效率的多,但是linked每一个结点的信息构造是比array要复杂的多,哪怕同样一次增删,linked的任务仅仅是清除这个结点的前后结点的后驱地址和前驱地址,但是这个工作量依旧比数组的节点移位要复杂的多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值