cjzsb123 2017-01-17 03:22 采纳率: 0%
浏览 1182

关于ArrayList插入速度的问题

 public class test1 {
    public static void main(String[] args) {

                //第一个列表
        ArrayList<Integer> list1 = new ArrayList<Integer>();
        long start1 = System.currentTimeMillis();
        for (int i = 0; i < 10000000; i++) {
            list1.add(i);
        }
        System.out.println("第一个列表花费" + (System.currentTimeMillis() - start1) + "毫秒");


        //第二个列表
        ArrayList<Integer> list2 = new ArrayList<Integer>();
        long start2 = System.currentTimeMillis();
        for (int i = 10000000; i < 20000000; i++) {
            list2.add(i);
        }
        System.out.println("第二个列表花费" + (System.currentTimeMillis() - start2) + "毫秒");

    }
}

同样都是插入1000万条数据。
为什么第一个花费了6000ms,而第二个只用了500ms,差距怎么这么大?
我把第二个列表的代码移到前面,结果还是一样:先运行的花费时间久,后运行的花费的时间很短

  • 写回答

5条回答

  • Book1346 2017-01-17 03:33
    关注

    逻辑和语法上,是没有差别的。特别是你两个列表的类型都是ArrayList类型,所以结果运行的时间应该是一致的。
    将你的代码在我自己机子上测试了一下,得出的结论也是二者基本相等,没有出现你说的这种情况。
    应该是你运行程序的Eclipse的问题吧。或者是初始化的原因。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据