我是靠谱客的博主 俏皮茉莉,最近开发中收集的这篇文章主要介绍结论:能用Stream就不要用For循环,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

结论:能用Stream的就不要用For循环
通过测试: Stram流比For循环处理速度稍快一些(2-3s不等)

控制台输出的结论,我就不再展示了(专治不自己动手验证的朋友????,只有亲自验证过,记忆才会更深刻哦)

案例如下:
 


    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        IntStream.range(0, 10000000).boxed()
                .forEach(i -> list.add(i));

        int MAX_HANDLE = 100000;
        int MAX_HANDLE_TOTAL = (list.size() + MAX_HANDLE - 1) / MAX_HANDLE;



        //数据分割 skip 手动塞数据
      long  start = System.currentTimeMillis();
        List<List<Integer>> result1 = new ArrayList<>(MAX_HANDLE_TOTAL);
        Stream.iterate(0, n -> n + 1)
                .limit(MAX_HANDLE_TOTAL)
                .forEach(i -> {
                    int fromIndex = i * MAX_HANDLE;
                    int toIndex = fromIndex + MAX_HANDLE;
                    result1.add(list.stream().skip(fromIndex).limit(toIndex).collect(Collectors.toList()));
                });

        System.err.println("Stream skip parallel 手动塞数据 总耗时:" + (System.currentTimeMillis() - start) + "ms");




        //数据分割 for循环 1
         start = System.currentTimeMillis();

        List<List<Integer>> result3 = new ArrayList<>(MAX_HANDLE_TOTAL);
        for (int i = 0; i <= MAX_HANDLE_TOTAL; i++) {
            int fromIndex = i * MAX_HANDLE;
            int toIndex = fromIndex + MAX_HANDLE;
            result3.add(list.stream().skip(fromIndex).limit(toIndex).collect(Collectors.toList()));
        }
        System.err.println("for循环 总耗时:" + (System.currentTimeMillis() - start) + "ms");



    }

 

最后

以上就是俏皮茉莉为你收集整理的结论:能用Stream就不要用For循环的全部内容,希望文章能够帮你解决结论:能用Stream就不要用For循环所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部