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,但是在無序插入的時候LinkedList效率高於ArrayList。

在做其餘數據量測試的時候得出ArrayList通過for循環遍歷效率要高於迭代器遍歷,LinkedList迭代器遍歷效率要遠高於for循環遍歷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章