zoukankan      html  css  js  c++  java
  • ArrayList与LinkedList性能差别

    1、             ArrayList和LinkedList插入元素性能差别

    ArrayList内部使用数组存储,针对这一性质,在数组最后插入元素较快,在数组中间插入元素较慢,因为插入位置之后的元素要后移。而LinkedList在哪个位置插入都比较快,当然在LinkedList中间位置插入时,也涉及到遍历时间,但是该时间比较短。下面是测试。

    测试一:插入到最后位置,性能差别不大

    package com.pcitc.pattern.collection;

    import java.util.AbstractList;

    import java.util.ArrayList;

    import java.util.Date;

    import java.util.Iterator;

    import java.util.LinkedList;

    import java.util.List;

    public class ArryListClient {

    /**

     * @param args

     */

    public static void main(String[] args) {

               List<UserBean> list = new ArrayList<UserBean>();

               List<UserBean> linkedlist = new LinkedList<UserBean>();

              

               int count = 100000;

        System.out.println("run...");

               UserBean ub = null;

            long i1 = System.currentTimeMillis();

            for(int i = 0;i<count;i++){

            ub = new UserBean(""+i,i,"ddd"+i);

            list.add(i,ub);

            }

            long i2 = System.currentTimeMillis();

            System.out.println("增加元素,Arraylist耗时:" + (i2-i1));

          

            long i3 = System.currentTimeMillis();

            for(int i = 0;i<count;i++){

            ub = new UserBean(""+i,i,"ddd"+i);

            linkedlist.add(0,ub);

            }

            long i4 = System.currentTimeMillis();

            System.out.println("增加元素,linkedlist耗时:" + (i4-i3));   

        

            list.clear();

            linkedlist.clear();

            list = null;

            linkedlist = null;

    }

    性能一运行结果:

    run...

    增加元素,Arraylist耗时:219

    增加元素,linkedlist耗时:141

    测试二:插入到首位置,性能差别大

    package com.pcitc.pattern.collection;

    import java.util.AbstractList;

    import java.util.ArrayList;

    import java.util.Date;

    import java.util.Iterator;

    import java.util.LinkedList;

    import java.util.List;

    public class ArryListClient {

    /**

     * @param args

     */

    public static void main(String[] args) {

               List<UserBean> list = new ArrayList<UserBean>();

               List<UserBean> linkedlist = new LinkedList<UserBean>();

              

               int count = 100000;

        System.out.println("run...");

               UserBean ub = null;

            long i1 = System.currentTimeMillis();

            for(int i = 0;i<count;i++){

            ub = new UserBean(""+i,i,"ddd"+i);

            list.add(0,ub);

            }

            long i2 = System.currentTimeMillis();

            System.out.println("增加元素,Arraylist耗时:" + (i2-i1));

          

            long i3 = System.currentTimeMillis();

            for(int i = 0;i<count;i++){

            ub = new UserBean(""+i,i,"ddd"+i);

            linkedlist.add(0,ub);

            }

            long i4 = System.currentTimeMillis();

            System.out.println("增加元素,linkedlist耗时:" + (i4-i3));   

        

            list.clear();

            linkedlist.clear();

            list = null;

            linkedlist = null;

    }

    }

    性能二运行结果:性能差36倍之多

    run...

    增加元素,Arraylist耗时:6250

    增加元素,linkedlist耗时:234

  • 相关阅读:
    js相关禁止
    单例模式 俗称单例3步曲+1曲
    轮廓线重建:二维平行轮廓线重建理论和方法
    一种面向三维地质剖面的形体表面重构算法
    在不使用gluSphere()的情况下在OpenGL中绘制Sphere
    Balabolka
    jQuery学习笔记之可见性过滤选择器
    Flask学习之四 数据库
    Flask学习之三 web表单
    Flask学习之二 模板
  • 原文地址:https://www.cnblogs.com/mysqlcluster/p/2033597.html
Copyright © 2011-2022 走看看