比较Java数组各种List的性能

package ceshi;

import java.util.*;

public class PerfprmanceTester {
	private static final int TIMES = 10000;

	public static abstract class Tester {
		private String operation;

		public Tester(String operation) {
			this.operation = operation;
		}

		public abstract void test(List<String> list);

		public String getOperation() {
			return operation;
		}
	}

	static Tester iterateTester = new Tester("iterate") {
		public void test(List<String> list) {
			for (int i = 0; i < 10; i++) {
				Iterator<String> it = list.iterator();
				while (it.hasNext()) {
					it.next();
				}
			}
		}
	};
	static Tester getTester = new Tester("get") {
		public void test(List<String> list) {
			for (int i = 1; i < list.size(); i++)
				for (int j = 0; j < 10; j++)
					list.get(j);
		}
	};
	static Tester insertTester = new Tester("insert") {
		public void test(List<String> list) {
			ListIterator<String> it = list.listIterator(list.size() / 2);
			for (int i = 0; i < TIMES / 2; i++)
				it.add("hello");
		}
	};
	static Tester removeTester = new Tester("remove") {
		public void test(List<String> list) {
			ListIterator<String> it = list.listIterator();
			while (it.hasNext()) {
				it.next();
				it.remove();
			}
		}
	};

	static public void testJavaArray(List<String> list) {
		Tester[] testers = { iterateTester, getTester };
		test(testers, list);
	}

	static public void testList(List<String> list) {
		Tester[] testers = { insertTester, iterateTester, getTester, removeTester };
		test(testers, list);
	}

	static public void test(Tester[] testers, List<String> list) {
		for (int i = 1; i < testers.length; i++) {
			System.out.print(testers[i].getOperation() + "操作:  ");
			long t1 = System.currentTimeMillis();
			testers[i].test(list);
			long t2 = System.currentTimeMillis();
			System.out.print(t2 - t1 + "ms");
			System.out.println();
		}
	}

	public static void main(String[] args) {
		List<String> list = null;
		System.out.println("---测试JAVA数组---");
		String[] ss = new String[TIMES];
		Arrays.fill(ss, "hello");
		list = Arrays.asList(ss);
		testJavaArray(list);
		ss = new String[TIMES / 2];
		Collection<String> col = Arrays.asList(ss);
		System.out.println("---测试Vector---");
		list = new Vector<String>();
		list.addAll(col);
		testList(list);
		System.out.println("---测试LinkedList---");
		list = new LinkedList<String>();
		list.addAll(col);
		testList(list);
		System.out.println("---测试ArrayList---");
		list = new ArrayList<String>();
		list.addAll(col);
		testList(list);
	}
}

运行结果

---测试JAVA数组---
get操作:  2ms
---测试Vector---
iterate操作:  2ms
get操作:  1ms
remove操作:  3ms
---测试LinkedList---
iterate操作:  2ms
get操作:  2ms
remove操作:  1ms
---测试ArrayList---
iterate操作:  2ms
get操作:  3ms
remove操作:  4ms
发布了69 篇原创文章 · 获赞 335 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/lk888666/article/details/84368722