几种集合框架的效率问题

原创 2013年12月01日 23:22:56


ArrayList  LinkedList Vector这三个集合框架在操作数据时,即往里面添加新的变量的时候,三个的效率排名。

最开始猜测是ArrayList第一是肯定没有问题的,关键是LinkedList和Vector,当时觉得Vector既然是线程安全的,那应该具有同步锁,那应该效率会慢一点。

结果却是相反的

// 测试ArrayList的性能,这里讲循环的数量尽量加大,使达到更加明显的效果
	public static void arrayListTest() {
		List arraylist = new ArrayList();
		long start = System.currentTimeMillis();
		for (int i = 0; i < 1000000; i++) {
			arraylist.add("abc");
		}
		long end = System.currentTimeMillis();
		System.out.println("arraylist Times = " + (end - start));
	}

	// 测试LinkedList
	public static void linkListTest() {
		List linklist = new LinkedList();
		long start = System.currentTimeMillis();
		for (int i = 0; i < 1000000; i++) {
			linklist.add("abc");
		}
		long end = System.currentTimeMillis();
		System.out.println("linklist Times = " + (end - start));
	}

	// 测试Vector
	public static void vectorTest() {
		Vector vectorlist = new Vector();
		long start = System.currentTimeMillis();
		for (int i = 0; i < 1000000; i++) {
			vectorlist.add("abc");
		}
		long end = System.currentTimeMillis();
		System.out.println("vectorlist Times = " + (end - start));
	}

总结:最慢的是LinkedList,最快的是ArrayList 。我猜想估计是LinkedList底层由于不是有序的线性的。在末尾插入的时候需要改动两个指针。我只能这样理解了,看有没有谁能给出更加正确或者是更加合理的解释。


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

几种常见排序算法及其效率

原文地址:几种常见排序算法及其效率作者:whatever介绍了几种交换排序的算法 1。冒泡排序(Bubble Sort) 是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的...
  • wukongjuan
  • wukongjuan
  • 2016年08月12日 14:59
  • 925

你研究过单例么?这样写单例效率最高.

小汤我在琢磨dispatch_once的实现原理的时候,无意间发现,dispatch_once的效率似乎还有提升的空间,忍不住出来嘚瑟一下. 给大家介绍一下OC下常用的单例实现方式,以及效率比较高的d...
  • u010982858
  • u010982858
  • 2015年06月06日 15:09
  • 988

几种拼接字符串的效率问题 .

public class test { /** * @param args */ public static void main(String[] args) { // TODO Aut...
  • fuyifang
  • fuyifang
  • 2015年03月16日 12:38
  • 1529

C#集合类型总结和性能分析

C#集合类型概述集合是.NET FCL(Framework Class Library)中很重要的一部分。所有的集合类都继承自IEnumerable。集合类总体可分为一下几类:关联/非关联型集合,顺序...
  • chen8238065
  • chen8238065
  • 2015年07月23日 18:00
  • 4119

01背包问题几种算法实现

最简单的就是利用搜索,把每一种情况都考虑。 //深度搜索。复杂度O(2^n) int dfs(int i,int j) { int res;//剩余的空间量。 if(i==n)res=0;//...
  • ydd97
  • ydd97
  • 2015年01月29日 15:50
  • 1202

使用limit效率的问题和优化

LIMIT用来返回SELECT语句的行数。LIMIT取1个或2个数字参数,如果给定2个参数,第一个指定要返回的第一行的偏移量,第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。     L...
  • Yqq__00
  • Yqq__00
  • 2016年09月22日 14:42
  • 640

Sql中EXISTS与IN的效率问题

根据两张表大小不同选择EXSIST、IN
  • u014134766
  • u014134766
  • 2016年05月18日 12:29
  • 2941

c++各种排序效率相比较

各种排序效率#include #include #include using namespace std;#define N 300000 //#define RANDOM #define MYDEB...
  • qq_30749883
  • qq_30749883
  • 2016年09月07日 16:37
  • 591

select 效率问题

很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如:  select * from table1 where name='...
  • liuruiqun
  • liuruiqun
  • 2016年09月11日 16:59
  • 358

时间类型数据存储的效率问题

最近有客户问了一个与时间字段相关的SQL效率问题,数据库为Oracle,SQL语句如下:select * from sometable where to_date(prcdate,'YYYY-MM-D...
  • liufeng1980423
  • liufeng1980423
  • 2016年04月19日 14:42
  • 3160
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:几种集合框架的效率问题
举报原因:
原因补充:

(最多只允许输入30个字)