测试ArrayList和LinkedList的效率

测试代码如下

import java.util.ArrayList;
import java.util.LinkedList;

public class arraylistPKlinkedlist {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
          arraylist();
          linkedlist();
	}
	 static void arraylist(){
		ArrayList al = new ArrayList();

        long start = System.currentTimeMillis();
        for(int i = 0 ; i<300000 ;i++){
            al.add(0,"加入元素"+i);//注意
        }
        long end = System.currentTimeMillis();
        System.out.println("ArrayList消耗的时间"+(end - start));
	}
	static void linkedlist(){
	 	LinkedList al = new LinkedList();

        long start = System.currentTimeMillis();
        for(int i = 0 ; i<300000 ;i++){
            al.add(0,"加入元素"+i);
        }
        long end = System.currentTimeMillis();
        System.out.println("LinkedList消耗的时间"+(end - start));
	}

}

测试结果

ArrayList消耗的时间45157

LinkedList消耗的时间155

这其中有一点需要注意:

在添加元素的时候,添加元素的位置很重要,这个程序添加新元素的位置每次都是第一个(这样顺序存储的结构每次都要移动最大次数),但是如果添加元素每次都是最后一个,那么结果就大不一样了,ArrayList消耗的时间比LinkedList还要少。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-22 16:11:30

测试ArrayList和LinkedList的效率的相关文章

依赖注入的方式测试ArrayList和LinkedList的效率

先贴结果 项目结构 使用配置文件的方式 package com.baobaotao1; import java.util.Date; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { //往这个类里面注入

java的list几种实现方式的效率(ArrayList、LinkedList、Vector、Stack),以及 java时间戳的三种获取方式比较

一.list简介 List列表类,顺序存储任何对象(顺序不变),可重复. List是继承于Collection的接口,不能实例化.实例化可以用: ArrayList(实现动态数组),查询快(随意访问或顺序访问),增删慢.整体清空快,线程不同步(非线程安全).数组长度是可变的百分之五十延长 LinkedList(实现链表),查询慢,增删快. Vector(实现动态数组),都慢,被ArrayList替代.长度任意延长.线程安全(同步的类,函数都是synchronized) Stack(实现堆栈)继承

ArrayList和LinkedList循环遍历效率探索(一)

一.Arraylist的遍历方式效率比较 实验代码: import java.util.ArrayList;import java.util.Iterator;import java.util.List; public class TestListSpeed { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for (int index = 0; index <

面试题——ArrayList和LinkedList的区别

List概括 先回顾一下List在Collection的框架图: 从图中可以看出: List是一个接口,他继承Collection接口,代表有序的队列. AbstractList是一个抽象类, ,它继承与AbstractCollection.AbstractList实现了List接口中除了size().get(int location)之外的方法. AbstractSequentialList是一个抽象类,它继承与AbstrctList.AbstractSequentialList实现了"链表中

Java中arraylist和linkedlist源代码分析与性能比較

Java中arraylist和linkedlist源代码分析与性能比較 1,简单介绍 在java开发中比較经常使用的数据结构是arraylist和linkedlist,本文主要从源代码角度分析arraylist和linkedlist的性能. 2,arraylist源代码分析 Arraylist底层的数据结构是一个对象数组.有一个size的成员变量标记数组中元素的个数,例如以下图: * The array buffer into which the elements of the ArrayLis

Java中arraylist和linkedlist源码分析与性能比较

Java中arraylist和linkedlist源码分析与性能比较 1,简介 在java开发中比较常用的数据结构是arraylist和linkedlist,本文主要从源码角度分析arraylist和linkedlist的性能. 2,arraylist源码分析 Arraylist底层的数据结构是一个对象数组,有一个size的成员变量标记数组中元素的个数,如下图: * The array buffer into which the elements of the ArrayList are sto

ArrayList 和 LinkedList的执行效率比较

一.概念: 一般我们都知道ArrayList* 由一个数组后推得到的 List.作为一个常规用途的对象容器使用,用于替换原先的 Vector.允许我们快速访问元素,但在从列表中部插入和删除元素时,速度却嫌稍慢.一般只应该用ListIterator 对一个 ArrayList 进行向前和向后遍历,不要用它删除和插入元素:与 LinkedList 相比,它的效率要低许多LinkedList 提供优化的顺序访问性能,同时可以高效率地在列表中部进行插入和删除操作.但在进行随机访问时,速度却相当慢,此时应

ArrayList与LinkedList效率对比

ArrayList与LinkedList效率对比 概述 ArrayList 是一个动态数组,它是线程不安全的,允许元素为null.其底层数据结构依然是数组,因为实现了RandomAccess接口,所以拥有随机快速访问的能力,ArrayList可以以O(1)的时间复杂度去根据下标访问元素.由于数组的内存连续,可以根据下标以O1的时间改查元素,因此时间效率很高. LinkedList 是一个双向链表,它是 线程不安全的,允许元素为null.其底层数据结构是链表,和ArrayList比,没有实现Ran

ArrayList和LinkedList的区别

从字面上大概可以猜出ArrayList是用数组实现的的一种数据结构:LinkedList采用链表实现.那么要剖析区别的话大概可以概括到数组和链表的区别.结合在数据结构课上所学,我大概可以猜出几点区别,无外乎数组采用连续的内存空间存储数据,链表中用到了引用,那么存储的内容可以不在连续的内存空间里.以上是假如不会ArrayList和LinkedList的前提下做的假设.实际上两者主要区别有三点. 1.ArrayList是使用动态数组实现的数据结构,LinkedList使用双链表实现   2.Arra