今天练习ArrayList与LinkedList,在网上看到有关它俩应用效率的题型。觉得很有价值,保留一下。
1 import java.util.ArrayList; 2 import java.util.LinkedList; 3 import java.util.List; 4 5 public class CollT5 { 6 static final int N = 50000; 7 8 static long timeList(List<Object> list) { 9 10 long start = System.currentTimeMillis(); 11 12 Object o = new Object(); 13 for (int i = 0; i < N; i++) 14 list.add(0, o); 15 return System.currentTimeMillis() - start; 16 } 17 18 public static void main(String[] args) { 19 System.out.println("ArrayList耗时:" + timeList(new ArrayList<Object>())); 20 System.out.println("LinkedList耗时:" + timeList(new LinkedList<Object>())); 21 } 22 }
1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.LinkedList; 4 import java.util.List; 5 6 public class CollT6 { 7 static List<Integer> array = new ArrayList<Integer>(); 8 static List<Integer> linked = new LinkedList<Integer>(); 9 10 public static void main(String[] args) { 11 12 for (int i = 0; i < 10000; i++) { 13 array.add(i); 14 linked.add(i); 15 } 16 System.out.println("array time:" + getTime(array)); 17 System.out.println("linked time:" + getTime(linked)); 18 System.out.println("array insert time:" + insertTime(array)); 19 System.out.println("linked insert time:" + insertTime(linked)); 20 21 } 22 23 public static long getTime(@SuppressWarnings("rawtypes") List list) { 24 long time = System.currentTimeMillis(); 25 for (int i = 0; i < 10000; i++) { 26 @SuppressWarnings("unchecked") 27 int index = Collections.binarySearch(list, list.get(i)); 28 if (index != i) { 29 System.out.println("ERROR!"); 30 } 31 } 32 return System.currentTimeMillis() - time; 33 } 34 35 @SuppressWarnings("unchecked") 36 public static long insertTime(@SuppressWarnings("rawtypes") List list) { 37 long time = System.currentTimeMillis(); 38 for (int i = 100; i < 10000; i++) { 39 list.add(5000, i); 40 } 41 return System.currentTimeMillis() - time; 42 43 } 44 45 }
附加:
遇到java类型后面跟三个点是代表的情况了,就补充一下:
1 //java类型后面跟三个点是代表可以接受多个实际参数,这里的多个指的是不限个数,可以是一个、两个、三个甚至更多。 2 //java中类型后面加三个点是java1.5之后出现的新的内容. 3 //使用在函数的形参上,相当于一个数组,调用函数时传递多少了实际参数,都可以存储到这个形参上. 4 //需要注意的是,使用这个形参必须放在最后一位形参位置上,否则会报错! 5 //即,可变数组参数。用...的话,传参数时可传可不传,传的话,可以是一个个并列地传,也可以直接是一个数组。 6 //在方法里取时,s是一个数组,如果调用时什么都没有传,那么s的长度就是0。传的时候传了几个,s的长度就是几。 7 public class CollT4 { 8 public static void main(String[] args) { 9 printString(); 10 System.out.println("=========="); 11 printString(new String[] { "我", "和", "你" }); 12 System.out.println("=========="); 13 printString("我", "和", "你"); 14 } 15 16 public static void printString(String... str) { 17 if (str.length == 0) { 18 System.out.println("没有传参数。"); 19 } 20 for (int i = 0; i < str.length; i++) { 21 System.out.println(str[i]); 22 } 23 } 24 }
相关参考链接:
http://pengcqu.iteye.com/blog/502676