LinkedList ArrayList测试2
下面测试他们的性能 如何
import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; public class ListTest { private static final int REPS =100; private abstract static class Tester { String name ; int size ; Tester(String name , int size ){ this.name= name ; this.size = size ; } abstract void test(List a ) ; } //测试的一个数组 private static Tester [] tests ={ new Tester("get" , 300) { void test(List a) { for (int i =0; i<REPS ; i++){ for (int j =0; j< a.size(); j++){ a.get(j) ; } } } }, new Tester("iteration",300) { void test(List a) { for (int i =0; i<REPS ; i++){ Iterator it = a.iterator() ; while (it.hasNext()) { it.next() ; } } } }, new Tester("insert" , 1000) { void test(List a) { int half = a.size()/2; String s = "test" ; ListIterator it = a.listIterator() ; for (int i =0; i<size*10; i++){ it.add(s) ; } } }, new Tester("remove", 5000) { void test(List a) { ListIterator it = a.listIterator(3) ; while (it.hasNext()) { it.next() ; it.remove() ; } } }, } ; public static void test (List a ){ System.out.println("testing"+ a.getClass().getName()) ; for (int i =0;i< tests.length; i++){ //collections中的fill方法:使用指定元素替换指定列表中的所有元素 Collections.fill(a, tests[i]) ; System.out.print(tests[i].name) ; long t1 = System.currentTimeMillis() ; tests[i].test(a); long t2 = System.currentTimeMillis() ; System.out.println(":"+ (t2-t1)); } } public static void main (String [] args ){ test(new ArrayList ()) ; test(new LinkedList()) ; } }