java集合类List

1.List

Vector:线程安全的。

ArrayList:适合查找与顺序添加。

LinkedList:适合随机插入与删除。

1.1ArrayList与LinkedList的add添加

1.1.1ArrayList与LinkedList的顺序add添加

代码:

复制代码
 1  List<String> linkedList = new LinkedList<>();
 2         List<String> arrayList = new ArrayList<>();
 3 
 4         Long startTime = System.currentTimeMillis();
 5         for (int i=0; i<1000000; i++) {
 6             linkedList.add("linkedList"+i);
 7         }
 8         Long endTime = System.currentTimeMillis();
 9         System.out.println("linkedList:"+(endTime-startTime));
10 
11         startTime=0L;endTime=0L;
12 
13         startTime = System.currentTimeMillis();
14         for (int i=0;i<1000000; i++) {
15             arrayList.add("arrayList"+i);
16         }
17         endTime=System.currentTimeMillis();
18         System.out.println("arrayList:"+(endTime-startTime));
复制代码

运行结果:

1 linkedList:340ms
2 arrayList:812ms

可以看出顺序添加ArrayList比LinkedList快

1.1.2ArrayList与LinkedList的add插入添加

复制代码
 1         List<String> linkedList = new LinkedList<>();
 2         List<String> arrayList = new ArrayList<>();
 3 
 4         Long startTime = System.currentTimeMillis();
 5 
 6         for (int i=0;i<1000000; i++) {
 7             arrayList.add(0,"arrayList"+i);
 8         }
 9         Long endTime=System.currentTimeMillis();
10         System.out.println("arrayList:"+(endTime-startTime)+"ms");
11         
12         startTime=0L;endTime=0L;
13 
14         startTime = System.currentTimeMillis();
15         for (int i=0; i<1000000; i++) {
16             linkedList.add(0,"linkedList"+i);
17         }
18 
19         endTime=System.currentTimeMillis();
20         System.out.println("linkedList:"+(endTime-startTime)+"ms");
复制代码

 

运行结果:

arrayList:127991ms
linkedList:1038ms

可以看出插入添加LinkedList比ArrayList快得多

1.2ArrayList与LinkedLis的set修改比较

代码:

 

复制代码
 1         List<String> linkedList = new LinkedList<>();
 2         List<String> arrayList = new ArrayList<>();
 3 
 4 
 5         for (int i=0;i<10000; i++) {
 6             arrayList.add(i/2,"arrayList"+i);
 7         }
 8         for (int i=0; i<10000; i++) {
 9             linkedList.add(i/2,"linkedList"+i);
10         }
11 
12         
13         Long startTime = System.currentTimeMillis();
14         for (int i=0; i<10000; i++) {
15             linkedList.set(i,"linkedListNew"+i);
16         }
17         Long endTime=System.currentTimeMillis();
18         System.out.println("arrayList:"+(endTime-startTime)+"ms");
19         
20         startTime=0L;endTime=0L;
21         
22         startTime = System.currentTimeMillis();
23         for (int i=0; i<10000; i++) {
24             arrayList.set(i,"linkedListNew"+i);
25         }
26         endTime=System.currentTimeMillis();
27         System.out.println("linkedList:"+(endTime-startTime)+"ms");
复制代码

运行结果:

1 arrayList:417ms
2 linkedList:5ms

可以看出set修改LinkedList比ArrayList快的多

1.3ArrayList与LinkedLis的remove比较

1.3.1 ArrayList与LinkedLis的remove(0)比较

代码:

复制代码
  List<String> linkedList = new LinkedList<>();
        List<String> arrayList = new ArrayList<>();


        for (int i=0;i<10000; i++) {
            arrayList.add(i/2,"arrayList"+i);
        }
        for (int i=0; i<10000; i++) {
            linkedList.add(i/2,"linkedList"+i);
        }


        Long startTime = System.currentTimeMillis();
        for (int i=0; i<10000; i++) {
            linkedList.remove(0);
        }
        Long endTime=System.currentTimeMillis();
        System.out.println("linkedList:"+(endTime-startTime)+"ms");

        startTime=0L;endTime=0L;

        startTime = System.currentTimeMillis();
        for (int i=0; i<10000; i++) {
            arrayList.remove(0);
        }
        endTime=System.currentTimeMillis();
        System.out.println("arrayList:"+(endTime-startTime)+"ms");
复制代码

运行结果:

1 linkedList:2ms
2 arrayList:11ms

可以看出两者都很快但LinkedList比ArrayList更快

1.3.2ArrayList与LinkedLis的0位置删除比较

代码:

复制代码
 1  List<String> linkedList = new LinkedList<>();
 2         List<String> arrayList = new ArrayList<>();
 3 
 4         for (int i=0;i<1000000; i++) {
 5             arrayList.add("arrayList"+i);
 6         }
 7         for (int i=0; i<1000000; i++) {
 8             linkedList.add("linkedList"+i);
 9         }
10         Long startTime = System.currentTimeMillis();
11             for(int i=0; i< 1000000; i++){
12                 arrayList.remove(0);
13             }
14         Long endTime=System.currentTimeMillis();
15         System.out.println("arrayList:"+(endTime-startTime)+"ms");
16 
17         startTime=0L;endTime=0L;
18 
19         startTime = System.currentTimeMillis();
20 
21         for(int i=0; i< 1000000; i++){
22             linkedList.remove(0);
23         }
24         endTime=System.currentTimeMillis();
25         System.out.println("linkedList:"+(endTime-startTime)+"ms");
复制代码

运行结果

1 arrayList:129623ms
2 linkedList:26ms

 

posted on   菜鸟铭  阅读(2788)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示