java8学习笔记-并行数组

该文章已生成可运行项目,

Java并行数组概述

在Java编程中,数组是一种基础且强大的数据结构,用于存储同一类型的多个元素集合。随着Java 8的发布,Java引入了并行数组的概念,这极大地提升了数组操作的效率和性能,特别是在多核处理器环境下。

并行数组是指对数组元素进行并行操作的能力。在Java 8中,这主要通过Arrays类中的并行方法实现,如Arrays.parallelSort(),它允许数组排序操作并行执行,从而利用多核处理器的优势加速排序过程。

特性

‌性能提升‌:利用多核处理器的并行计算能力,显著加速数组处理过程,如排序、分组和过滤等。

‌简化代码‌:无需手动编写复杂的并行处理代码,只需调用Java 8提供的并行API即可实现高效的并行操作。

‌易于使用‌:结合Lambda表达式和流(Stream)API,使得并行数组操作更加简洁和直观。

用法

Arrays.parallelSort()数组排序升序

使用Arrays.parallelSort()方法对数组进行并行排序。与传统的Arrays.sort()方法相比,parallelSort()能够充分利用多核处理器的优势,显著加快排序速度。

        List<Integer> list = new ArrayList();
        Random random = new Random();
        for (int i = 0; i < 10000000; i++) {
            list.add(random.nextInt());
        }

        int[] array = list.stream()
                .mapToInt(i -> i)
                .toArray();
        long time1 = System.currentTimeMillis();
        Arrays.sort(array);
        long time2 = System.currentTimeMillis();
        System.out.println(time2 - time1);
        System.out.println("time2:" + time2 + "      time1:" + time1);
        long time3 = System.currentTimeMillis();
        Arrays.parallelSort(array);
        long time4 = System.currentTimeMillis();
        System.out.println(time4 - time3);
        System.out.println("time4:" + time4 + "      time3:" + time3);

结果

倒序

        Integer[] arr = new Integer[]{1, 8, 51, 13, 46, 11, 22};
        Arrays.parallelSort(arr);
        org.apache.commons.lang.ArrayUtils.reverse(arr);
        Stream.of(arr).forEach(System.out::println);
结果

Arrays.parallelPrefix()用于对数组中的元素进行累积操作,并将结果存储在数组中

将数组的每项变为之前所有项之和

        Integer[] arr = new Integer[]{1, 8, 51, 13, 46, 11, 22};
        Arrays.parallelPrefix(arr,Integer::sum);
        Stream.of(arr).forEach(System.out::println);
结果

Arrays.parallelSetAll() 并行地为数组的每个元素赋值

将数组每个元素*5

            Integer[] arr = new Integer[]{1, 8, 51, 13, 46, 11, 22};
            Arrays.parallelSetAll(arr, value -> {
                System.out.println(value+"  "+arr[value]);
                return 5 * arr[value];
            });
    
            Stream.of(arr).forEach(System.out::println);

结果

模特招聘   微信经纪人:AIGO

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值