• 112737

    文章

  • 803

    评论

  • 12

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

list去重的三种方法

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>
记录一下list去重用到的三种方法以及这三种方法所耗的时间比较
方法一:
List<Integer> ints = new ArrayList<>();
        for (int i = 0; i < 100000; i++) {
            for (int i1 = 0; i1 < 50; i1++) {
                ints.add(i1);
            }
        }
long now1 = System.currentTimeMillis();
        Set<Integer> set = new HashSet<>(ints.size());
        set.addAll(ints);
        ints.clear();
        ints.addAll(set);
        ints.forEach(a -> System.out.print(a + "/"));
        System.out.println("方法1耗时" + (System.currentTimeMillis() - now1) + "ms");

方法二:
        for (int i = 0; i < 100000; i++) {
            for (int i1 = 0; i1 < 50; i1++) {
                ints.add(i1);
            }
        }
long now2 = System.currentTimeMillis();
        List<Integer> list = new ArrayList<>(ints.size());
        for (Integer i : ints) {
            if (!list.contains(i)) {
                list.add(i);
            }
        }
        ints.clear();
        ints.addAll(list);
        ints.forEach(a -> System.out.print(a + "/"));
        System.out.println("方法2耗时" + (System.currentTimeMillis() - now2) + "ms");

方法三:
        for (int i = 0; i < 100000; i++) {
            for (int i1 = 0; i1 < 50; i1++) {
                ints.add(i1);
            }
        }
long now3 = System.currentTimeMillis();
        ints = ints.stream().distinct().collect(Collectors.toList());
        ints.forEach(a -> System.out.print(a + "/"));
        System.out.println("方法3耗时" + (System.currentTimeMillis() - now3) + "ms");
执行结果:
0/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/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/方法1耗时132ms
0/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/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/方法2耗时99ms
0/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/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/方法3耗时48ms

结论 :

方法一耗时最长,二次之,方法三用时最短


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

0条评论

Loading...


自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客