java中LinkedList和ArrayList性能比对

 

 代码如下 复制代码
package com.letv.cloud.cdn.jtest; 
 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.LinkedList; 
import java.util.List; 
import java.util.concurrent.TimeUnit; 
 
import org.slf4j.LoggerFactory; 
 
import com.google.common.base.Stopwatch; 
 
public class JtestMain { 
     
    private final static org.slf4j.Logger LOGGER = LoggerFactory.getLogger("JtestMain"); 
     
    private static Stopwatch stopWatch = new Stopwatch(); 
 
    public static void testList(int num){ 
        List<String> aList = new ArrayList<String>(); 
        List<String> lList = new LinkedList<String>(); 
        stopWatch.reset(); 
        stopWatch.start(); 
        for(int i=0; i<num; i++){ 
            aList.add("201411180827 cctv5_800   83  796.03  115.182.51.134  123.125.89.75   in  uuid1   5"); 
        } 
        LOGGER.info("insert num:{} ArrayList cost:{} ms",num,stopWatch.elapsedTime(TimeUnit.MILLISECONDS)); 
         
        stopWatch.reset(); 
        stopWatch.start(); 
        for(int i=0; i<num; i++){ 
            lList.add("201411180827 cctv5_800   83  796.03  115.182.51.134  123.125.89.75   in  uuid1   5"); 
        } 
        LOGGER.info("insert num:{} LinkedList cost:{} ms",num,stopWatch.elapsedTime(TimeUnit.MILLISECONDS)); 
    } 
     
    public static void main(String[] args) throws InterruptedException, IOException { 
        int[] nums = {10000,10 * 10000,100 * 10000, 1000 * 10000, 10000 * 10000}; 
         
        for(int i=0; i<nums.length; i++){ 
            testList(nums[i]); 
        } 
    } 

测试结果:

 代码如下 复制代码

INFO [main] (JtestMain.java:65) 11:50:47,480 -- insert num:10000 ArrayList cost:2 ms 
INFO [main] (JtestMain.java:72) 11:50:47,484 -- insert num:10000 LinkedList cost:1 ms 
INFO [main] (JtestMain.java:65) 11:50:47,490 -- insert num:100000 ArrayList cost:5 ms 
INFO [main] (JtestMain.java:72) 11:50:47,495 -- insert num:100000 LinkedList cost:5 ms 
INFO [main] (JtestMain.java:65) 11:50:47,504 -- insert num:1000000 ArrayList cost:8 ms 
INFO [main] (JtestMain.java:72) 11:50:47,515 -- insert num:1000000 LinkedList cost:11 ms 
INFO [main] (JtestMain.java:65) 11:50:47,606 -- insert num:10000000 ArrayList cost:89 ms 
INFO [main] (JtestMain.java:72) 11:50:49,335 -- insert num:10000000 LinkedList cost:1729 ms 
INFO [main] (JtestMain.java:65) 11:50:50,290 -- insert num:100000000 ArrayList cost:954 ms 
INFO [main] (JtestMain.java:72) 11:51:14,263 -- insert num:100000000 LinkedList cost:23973 ms 

从上面的测试数据我们可以看得到ArrayList 是LinkedList几倍了,数据越大它们的区别就越能体现出来了。

时间: 2024-09-28 03:12:31

java中LinkedList和ArrayList性能比对的相关文章

Java中Vector与ArrayList的区别详解_java

首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复.3个具体实现类的相关区别如下:1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组

详解Java中Vector和ArrayList的区别_java

首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复. 3个具体实现类的相关区别如下: 1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对

Java中LinkedList使用Iterator遍历的问题

问题描述 老师留的作业题,实在是头疼....importjava.util.*;publicclassController{privateLinkedList<Event>eventList=newLinkedList<Event>();publicvoidaddEvent(Eventc){eventList.add(c);}publicvoidrun(){LinkedList<Event>eventListCopy=newLinkedList<Event>

关于java中linkedlist的remove()方法的问题

问题描述 intend1=1;intend2=2;linkl=newlink(end1,end2);然后有一个linkedlist<link>mylist我的想法是如果mylist中包含了l就从mylist中删除,为什么我直接用mylist.remove(l)总是不能成功删除???请求大家指教,谢谢! 解决方案 解决方案二:link类里有重写过hashCode,equals方法么解决方案三:equals重写了:publicclasslink{intnode1;intnode2;link(int

程序猿的日常——Java中的集合列表

列表对于日常开发来说实在是太常见了,以至于很多开发者习惯性的用到数组,就来一个ArrayList,根本不做过多的思考.其实列表里面还是有很多玩法的,有时候玩不好,搞出来bug还得定位半天.所以这里就再啰嗦一下,整理下相关的内容. 基础知识 一般计算机相关的专业都应该学过数据结构,而很多的集合都是应用了经典的数据结构设计的.比如数组.栈.队列.链表.树等等,里面也会用到很多常见的查找或者排序算法,所以就先简单的回顾下. 数组 数组在c语言里面用的很广泛,刚开始学习的时候,整天的空指针和数组越界.后

Java中ArrayList和LinkedList的遍历与性能分析_java

前言 通过本文你可以了解List的五种遍历方式及各自性能和foreach及Iterator的实现,加深对ArrayList和LinkedList实现的了解.下面来一起看看吧. 一.List的五种遍历方式 1.for each循环 List<Integer> list = new ArrayList<Integer>(); for (Integer j : list) { // use j } 2.显示调用集合迭代器 List<Integer> list = new Ar

分析Java中ArrayList与LinkedList列表结构的源码_java

一.ArrayList源码分析(JDK7) ArrayList内部维护了一个动态的Object数组,ArrayList的动态增删就是对这个对组的动态的增加和删除. 1.ArrayList构造以及初始化 ArrayList实例变量 //ArrayList默认容量 private static final int DEFAULT_CAPACITY = 10; //默认空的Object数组, 用于定义空的ArrayList private static final Object[] EMPTY_ELE

Java中ArrayList和LinkedList区别

一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针. 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据. ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references).例如

JAVA LinkedList和ArrayList的使用及性能分析_java

第1部分 List概括List的框架图List 是一个接口,它继承于Collection的接口.它代表着有序的队列.AbstractList 是一个抽象类,它继承于AbstractCollection.AbstractList实现List接口中除size().get(int location)之外的函数.AbstractSequentialList 是一个抽象类,它继承于AbstractList.AbstractSequentialList 实现了"链表中,根据index索引值操作链表的全部函数