天天看點

ArrayList與LinkedList各操作性能比較

在資料量為50w的時候測試資料 

@Test
	public void array() {
		
		//ArrayList追加元素
		long starttime = System.currentTimeMillis();
		for (int i = 0; i < COUNT; i++) {
			arrayList.add(i);
		}
		long endtime = System.currentTimeMillis();
		System.out.println("ArrayList追加元素:"+(endtime - starttime));
		
		//初始化
		arrayList = new ArrayList();
		
		//ArrayList插入元素
		starttime = System.currentTimeMillis();
		for (int i = 0; i < COUNT; i++) {
			arrayList.add(0,i);
		}
		endtime = System.currentTimeMillis();
		System.out.println("ArrayList插入元素:"+(endtime - starttime));
		
		//for循環周遊ArrayList
		starttime = System.currentTimeMillis();
		for (int i = 0; i < COUNT; i++) {
			arrayList.get(i);
		}
		endtime = System.currentTimeMillis();
		System.out.println("for循環周遊ArrayList:"+(endtime - starttime));
		
		//疊代器周遊ArrayList
		starttime = System.currentTimeMillis();
		Iterator i1 = arrayList.iterator();
		Object obj1;
		while(i1.hasNext()) {
			obj1 = i1.next();
		}
		endtime = System.currentTimeMillis();
		System.out.println("疊代器周遊ArrayList:"+(endtime - starttime));
		
	}
	
	@Test
	public void linked() {
		//LinkedList追加元素
		long starttime = System.currentTimeMillis();
		for (int i = 0; i < COUNT; i++) {
			linkedList.add(i);
		}
		long endtime = System.currentTimeMillis();
		System.out.println("LinkedList追加元素:"+(endtime - starttime));
		
		//初始化
		linkedList = new LinkedList();
		
		//LinkedList插入元素
		starttime = System.currentTimeMillis();
		for (int i = 0; i < COUNT; i++) {
			linkedList.add(0,i);
		}
		endtime = System.currentTimeMillis();
		System.out.println("LinkedList插入元素:"+(endtime - starttime));
		
		//for循環周遊LinkedList
		starttime = System.currentTimeMillis();
		for (int i = 0; i < COUNT; i++) {
			linkedList.get(i);
		}
		endtime = System.currentTimeMillis();
		System.out.println("for循環周遊LinkedList:"+(endtime - starttime));
		
		//疊代器周遊LinkedList
		starttime = System.currentTimeMillis();
		Iterator i2 = linkedList.iterator();
		Object obj2;
		while(i2.hasNext()) {
			obj2 = i2.next();
		}
		endtime = System.currentTimeMillis();
		System.out.println("疊代器周遊LinkedList:"+(endtime - starttime));
	}
           
ArrayList與LinkedList各操作性能比較
ArrayList與LinkedList各操作性能比較

可以看出在進行追加(有序添加)、周遊的時候ArrayList的效率高于LinkedList,但是在無序插入的時候LinkedList效率高于ArrayList。

在做其餘資料量測試的時候得出ArrayList通過for循環周遊效率要高于疊代器周遊,LinkedList疊代器周遊效率要遠高于for循環周遊。