• Java基础——ArrayList与LinkedList(二)


    今天练习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

  • 相关阅读:
    <转载>大白话系列之C#委托与事件讲解(二)
    <转载>C# 类型基础
    <转载>大白话系列之C#委托与事件讲解(三)
    <转载>大白话系列之C#委托与事件讲解大结局
    <转载>C#中父窗口和子窗口之间实现控件互操作
    <转载>C# 中的泛型
    <转载>C# 中的委托和事件
    mailto的用法
    计算器
    终于搞清楚了这句代码的意思
  • 原文地址:https://www.cnblogs.com/1693977889zz/p/7074189.html
Copyright © 2020-2023  润新知