栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA的ArrayList和LinkedList速度简单测试

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA的ArrayList和LinkedList速度简单测试

JAVA的ArrayList和LinkedList速度简单测试

结论:测试10万个Integer对象,发现随机查询,随机插入ArrayList比LinkedList快,快好多倍,jdk1.8

控制台输出结果:

StopWatch 'watch0': running time (millis) = 48963
-----------------------------------------
ms     %     Task name
-----------------------------------------
00044  000%  arrayList第一个一万条花费时间(随机插入)
00030  000%  arrayList第2个10000条随机插入花费时间
00034  000%  arrayList第3个10000条随机插入花费时间
00040  000%  arrayList第4个10000条随机插入花费时间
00050  000%  arrayList第5个10000条随机插入花费时间
00247  001%  arrayList第6个10000条随机插入花费时间
00071  000%  arrayList第7个10000条随机插入花费时间
00082  000%  arrayList第8个10000条随机插入花费时间
00067  000%  arrayList第9个10000条随机插入花费时间
00073  000%  arrayList第10个10000条随机插入花费时间
00105  000%  linkedList第一个1万条花费时间(随机插入)
00548  001%  linkedList第2个10000条随机插入花费时间
00982  002%  linkedList第3个10000条随机插入花费时间
01304  003%  linkedList第4个10000条随机插入花费时间
02070  004%  linkedList第5个10000条随机插入花费时间
03381  007%  linkedList第6个10000条随机插入花费时间
04811  010%  linkedList第7个10000条随机插入花费时间
06750  014%  linkedList第8个10000条随机插入花费时间
10559  022%  linkedList第9个10000条随机插入花费时间
11722  024%  linkedList第10个10000条随机插入花费时间
00246  001%  arrayList随机查询
05747  012%  linkedList随机查询
00181  000%  linkedList循环遍历1
05765  010%  linkedList循环遍历2
00211  000%  linkedList迭代器遍历

代码:

package demo.xxc;

import cn.hutool.core.util.RandomUtil;
import org.springframework.util.StopWatch;

import java.util.ArrayList;
import java.util.LinkedList;

public class Test001 {
    public static void main(String[] args) {
        StopWatch watch0 = new StopWatch("watch0");
        m3(watch0);
        System.out.println(watch0.prettyPrint());
    }

    private static void m1(StopWatch watch0) {
        watch0.start("arrayList花费时间(尾部添加)");
        ArrayList objects = new ArrayList<>();
        for (int i = 0; i < 10000000; i++) {
            objects.add(i);
        }
        watch0.stop();

        watch0.start("linkedList花费时间(尾部添加)");
        LinkedList objects1 = new LinkedList<>();
        for (int i = 0; i < 10000000; i++) {
            objects1.add(i);
        }
        watch0.stop();
    }

    private static void m2(StopWatch watch0) {
        watch0.start("arrayList第一个一万条花费时间(随机插入)");
        ArrayList arrayList = new ArrayList<>();
        arrayList.add(1);
        for (int i = 0; i < 100000 - 1; i++) {
            if (i > 0 && i % 10000 == 0) {
                watch0.stop();
                watch0.start(String.format("arrayList第%s个10000条随机插入花费时间", i / 10000 + 1));
            }

            int random = RandomUtil.randomInt(arrayList.size());
            System.out.println(arrayList.size() + " " + random);
            arrayList.add(random, i);
        }
        watch0.stop();

        watch0.start("linkedList第一个1万条花费时间(随机插入)");
        LinkedList linkedList = new LinkedList<>();
        linkedList.add(1);
        for (int i = 0; i < 100000 - 1; i++) {
            if (i > 0 && i % 10000 == 0) {
                watch0.stop();
                watch0.start(String.format("linkedList第%s个10000条随机插入花费时间", i / 10000 + 1));
            }

            int random = RandomUtil.randomInt(linkedList.size());
            System.out.println(linkedList.size() + " " + random);
            linkedList.add(random, i);
        }
        watch0.stop();
    }

    private static void m3(StopWatch watch0) {
        watch0.start("arrayList第一个一万条花费时间(随机插入)");
        ArrayList arrayList = new ArrayList<>();
        arrayList.add(1);
        for (int i = 0; i < 100000 - 1; i++) {
            if (i > 0 && i % 10000 == 0) {
                watch0.stop();
                watch0.start(String.format("arrayList第%s个10000条随机插入花费时间", i / 10000 + 1));
            }

            int random = RandomUtil.randomInt(arrayList.size());
            System.out.println(arrayList.size() + " " + random);
            arrayList.add(random, i);
        }
        watch0.stop();

        watch0.start("linkedList第一个1万条花费时间(随机插入)");
        LinkedList linkedList = new LinkedList<>();
        linkedList.add(1);
        for (int i = 0; i < 100000 - 1; i++) {
            if (i > 0 && i % 10000 == 0) {
                watch0.stop();
                watch0.start(String.format("linkedList第%s个10000条随机插入花费时间", i / 10000 + 1));
            }

            int random = RandomUtil.randomInt(linkedList.size());
            System.out.println(linkedList.size() + " " + random);
            linkedList.add(random, i);
        }
        watch0.stop();

        watch0.start("arrayList随机查询");
        for (int i = 0; i < 100000 - 1; i++) {
            int random = RandomUtil.randomInt(arrayList.size());
            System.out.println(arrayList.get(random));
        }
        watch0.stop();

        watch0.start("linkedList随机查询");
        for (int i = 0; i < 100000 - 1; i++) {
            int random = RandomUtil.randomInt(linkedList.size());
            System.out.println(linkedList.get(random));
        }
        watch0.stop();
        
		watch0.start("linkedList循环遍历1");
        for (Integer i : linkedList) {
            System.out.println(i);
        }
        watch0.stop();

        watch0.start("linkedList循环遍历2");
        for (int i = 0; i < linkedList.size(); i++) {
            System.out.println(linkedList.get(i));
        }
        watch0.stop();

        watch0.start("linkedList迭代器遍历");
        Iterator iterator = linkedList.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        watch0.stop();
    }
}



转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号