平静

遵循美德行事,纵使没有增加快乐,也可减轻焦虑。

导航

arraylist linkedlist性能测试

Posted on 2016-10-24 16:43  mdong  阅读(192)  评论(0编辑  收藏  举报

  

 

 

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;

import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Date;

public class TestList {

	public static void main(String[] args) {
		List<Integer> arrayList = new ArrayList<Integer>();
		List<Integer> linkList = new LinkedList<Integer>();
		insertTest(linkList);// 2 ms
		insertTest(arrayList);// 977 ms
		getTest(linkList);// 2475 ms
		getTest(arrayList);// 3 ms

	}

	public static void insertTest(List<Integer> list) {
		for (int i = 0; i < 5000; i++) {// 创建数据表
			for (int j = 1; j < 1000; j++) {
				list.add(i + j);
			}
		}
		Long begin = new Date().getTime();
		for (int i = 3; i < 1000; i += 3) {// 插入数据
			list.add(i, i);
		}
		Long end = new Date().getTime();
		System.out.println("cost : " + (end - begin) + " ms");
		System.out.println("number:" + list.size());
	}

	public static void getTest(List<Integer> list) {
		for (int i = 0; i < 5000; i++) {// 创建数据
			for (int j = 1; j < 1000; j++) {
				list.add(j);
			}
		}
		Long begin = new Date().getTime();
		for (int i = 3; i < 50000; i++) {// 插入数据
			list.get(i);
		}
		Long end = new Date().getTime();
		System.out.println("cost : " + (end - begin) + " ms");
		System.out.println("number:" + list.size());
	}

	/**
	 * 总结: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
	 * 2.对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。
	 * 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据
	 **/

}