今天練習ArrayList與LinkedList,在網上看到有關它倆應用效率的題型。覺得很有價值,保留一下。 附加: 遇到java類型後面跟三個點是代表的情況了,就補充一下: 相關參考鏈接: http://pengcqu.iteye.com/blog/502676 ...
今天練習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