ArrayList与LinkedList性能差别

摘要:
在任何位置插入LinkedList都很快。当然,在中间位置插入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

免责声明:文章转载自《ArrayList与LinkedList性能差别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF Dispatcher.BeginInvoke子线程更新UIVue全家桶以及常用知识点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

数据结构基础温故-1.线性表(上)

开篇:线性表是最简单也是在编程当中使用最多的一种数据结构。例如,英文字母表(A,B,C,D...,Z)就是一个线性表,表中的每一个英文字母都是一个数据元素;又如,成绩单也是一个线性表,表中的每一行是一个数据元素,每个数据元素又由学号、姓名、成绩等数据项组成。顺序表和链表作为线性表的两种重要的存在形式,它们是堆栈、队列、树、图等数据结构的实现基础。 一、线性...

java--集合框架

1.ArrayList和Vector的区别? 1.vector 的所有方法都是同步(Synchronized)的,是线程安全的(thread-safe)的,而ArrayList是线程不安全的,线程安全是会影响性能,ArrayList 比vector的性能好 2.当Vector或ArrayList元素超过初始大小时,vector会将容量翻倍,而arrayLi...

02_编程规约——集合处理

1.【强制】关于hashCode和equals的处理,必须遵循如下规则 1.1 只要重写equals,就必须重写hashCode。 1.2 因为Set存储的是不重复对象,依据hashCode和equals进行判断,所以Set存储的对象必须重写这两个方法。 1.3 如果自定义对象为Map的键,那么必须重写hashCode和equals。 说明:String重...

Java泛型讲解

1. 概述在引入泛型之前,Java类型分为原始类型、复杂类型,其中复杂类型分为数组和类。引入范型后,一个复杂类型就可以在细分成更多的类型。例如原先的类型List,现在在细分成List<Object>, List<String>等更多的类型。注意,现在List<Object>, List<String>是两种不...

Java高级开发_性能优化的细节

一、核心部分总结: 尽量在合适的场合使用单例【减负提高效率】 尽量避免随意使用静态变量【GC】 尽量重用对象,避免过多过常地创建Java对象【最大限度地重用对象】 尽量使用final修饰符【内联(inline)】 尽量使用局部变量【栈快】 尽量处理好包装类型和基本类型两者的使用场所【堆栈】 慎用synchronized,尽量减小synchronize的方...

网络技能大赛A卷测试

  这个测试对我来言有些难度,短时间内做不了太多。首先是思路的理清,登录后的界面有好几种,而且公文的状态也有好几种。理清思路就花了一些时间 然后大致的框架做了做,然后将用户的增删改查还有公文的增删改查写了写。登录界面也完成了,不过不同角色登陆后的界面还没来得及做。主要就是功能太多,运用不熟练 数据库      bean层的基本信息 package c...