List的三个实现类的添加效率研究

前几天在网上看见有人怀疑ArrayList,LinkedList和Vector的添加效率问题。我觉得他说的也挺有道理的,于是就做了一个实验。当然,我做的实验也不是很严谨,使用的MyEclipse,然后使用单元测试进行测试的数据。测试结果如下:(单位:s)

1000            10000            100000            500000            1000000            5000000

ArrayList    0.039            0.103                0.213            0.852                1.445                    10.444

Vex\ctor    0.047              0.078                0.156            0.827                1.419                    9.812

LinkedList    0.035            0.09                0.182            1.143                2.122                    14.194

测试代码如下:

从上面的数据可以看出来的是LinkedList    的插入性能随着是插入的数据增多性能越来越差的厉害。

我的解释是LinkedList    插入数据时也会先去查找一遍。而LinkedList  的查找性能本来就不如另两个,所以插入的效率自然也就比另外两个差,尤其是在大数据的时候。

时间: 2024-08-03 05:27:10

List的三个实现类的添加效率研究的相关文章

智能机器人“小昆”的实现(三)实体类的实现

在上一篇文章中,我们实现了获取服务器返回数据的工具类.没有读过的朋友可以点击下面链接: http://www.cnblogs.com/fuly550871915/p/4852568.html 这一篇文章要在上一篇的基础上,实现两个重要的实体类,一个是ChatMsg,用来封装数据从而实现标准的消息格式:一个是ResultMsg,用来封装从服务器端返回的数据. 一.准备工作 在这里,解析json字符串,我们打算使用第三方包GSON.首先点击下面的地址,下载该包. http://code.google

【转】VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)

原文网址:http://www.jizhuomi.com/software/153.html 前两讲中鸡啄米为大家讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.鸡啄米再声明下,生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 因为鸡啄米给大家的例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDITION_DIALOG,并自动生成了对话框类CAdditionDlg,它是从CDialogEx类派生的.大家用过VC++6.0

cocos2dx[3.2](22)——三种缓存类

[唠叨] Cocos引擎主要有三种缓存类: > 纹理缓存     : TextureCache > 精灵帧缓存 : SpriteFrameCache > 动画缓存     : AnimationCache 缓存的目的就是:先将所需资源(如纹理图片)加载到内存中,之后再次使用该资源的时候,就可以直接从内存中取出,而不需要重新加载.从而减少了CPU和GPU的内存占用. 本文对参考文献的内容进行了整理与整合,并加入一些自己的观点. [致谢] http://www.cocoachina.com/

VS2010/MFC对话框:创建对话框类和添加控件变量

创建对话框类和添加控件变量 前两讲中讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDITION_DIALOG,并自动生成了对话框类CAdditionDlg,它是从CDialogEx类派生的.大家用过VC++ 6.0的可能记得,我们定义的对话框类都是从CDialog类派生的,但在VS2010中,一般对话框类都是继承自CDia

Win32中GDI+应用(三)---Graphics类

在我理解看来,Graphics是一个device context和你的drawing conetent之间的一个中介.它存储了device context的相关属性,以及drawing content的属性.这样,它就能用自己的方法把drawing content“映射”到device content 之上.GDI中的绘图工作是直接在device context之上进行的.在GDI—+中,你因该在device context之上再建立一个graphics,然后调用graphics的相关方法完成绘

在类中添加方法和成员变量

在前面我们也了解到了Java语言的最小单位是类.在C语言中有着全局变量,在Java中也有. 在Java中添加全局变量(成员变量)是由三大部分组成的:访问修饰符.数据类型和成员变量. 而访问修饰符有这几种:public .private.protected或者不写(这种将使用默认访问修饰符). 我们在引用对象时,必须对其进行初始化,否则将会报错.如果我们不自己去初始化值,那马那么 电脑回自己默认初始值:0.0.0.null.false.空字符. 在Java类中添加方法也是由:访问修饰符.返回值.方

【来写个2048吧】—— 创建卡片类以及添加

一.创建卡片类 首先想想卡片是一个精灵,那么我们就继承精灵类.然后还要有数字,背景颜色.基本就这些,那么看代码吧. Card.h代码 #ifndef _CARD_H_ #define _CARD_H_ #include "cocos2d.h" USING_NS_CC ; class CardSprite : public Sprite { public : //这里number是卡片数字,wight和height是宽和高,cardSpriteX和CardSpriteY是卡片坐标 sta

能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么

不能向编译后得到的类中增加实例变量!能向运行时创建的类中添加实例变量! 因为编译后的类已经注册在runtime中,类结构体中的objc_ivar_list 实例变量的链表和instance_size实例变量的内存大小已经确定,同时runtime 会调用class_setIvarLayout 或 class_setWeakIvarLayout来处理strong weak引用,所以不能向存在的类中添加实例变量. 运行时创建的类是可以添加实例变量,调用 class_addIvar 函数,但是得在调用 

【socket】Socket的三个功能类TCPClient、TCPListener 和 UDPClient

Socket的三个功能类TCPClient.TCPListener 和 UDPClient (转) 应用程序可以通过 TCPClient.TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务.这些协议类建立在 System.Net.Sockets.Socket 类的基础之上,负责数据传送的细节.(也就是说TCPClient.TCPListener 和 UDPClient 类是用来简化Socket) TcpClient 和 TcpLi