《Java核心技术I》并行数组算法

并行数组算法

Arrays类提供了大量并行化操作。

Arrays.parallelSort方法可以对一个基本类型值或对象的数组排序。

java 复制代码
package arrays;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Comparator;

public class ParallelSortTest {

    public static void main(String[] args) throws IOException {
        var contents = new String(
                Files.readAllBytes(Path.of("D:\\ChromeCoreDownloads\\eclipse-jee-2024-09-R-win32-x86_64\\eclipse\\eclipse-workspace\\JavaCore1\\src\\arrays\\alice.txt")),StandardCharsets.UTF_8);
//        System.out.println(contents);
        String[] words = contents.split("[\\P{L}]+");
        System.out.println(Arrays.toString(words));
        Arrays.parallelSort(words, Comparator.comparing(String::length));
        System.out.println(Arrays.toString(words));
    }

}

三种:

  • 默认排序:Arrays.parallelSort(words)
  • 提供比较器排序:Arrays.parallelSort(words, Comparator.comparing(String::length));
  • 只排序提供的范围:values.parallelSort(values.length/2,values.length);

parallelSetAll方法会用由一个函数计算得到的值填充一个数组。

java 复制代码
package arrays;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Comparator;

public class ParallelSetAllTest {

    public static void main(String[] args) throws IOException {
        int[] values = new int[20];
        Arrays.parallelSetAll(values, i->i+1);
        System.out.println(Arrays.toString(values));
    }

}
//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

最后一个parallelPrefix方法,用一个给定结合操作的相应前缀的累加结果替换各个数组元素。

java 复制代码
package arrays;

import java.util.Arrays;

public class ParallelPrefixTest {

    public static void main(String[] args) {
        int[] values = new int[] {1,2,3,4,5,6,7,8,9}; 
        Arrays.parallelPrefix(values, (x,y)->x+y);
        System.out.println(Arrays.toString(values));
    }

}
//[1, 3, 6, 10, 15, 21, 28, 36, 45]
相关推荐
星晨雪海43 分钟前
企业标准 DTO 传参 + Controller + Service + 拷贝工具类完整版
java·开发语言·python
yuanmazhiwu44 分钟前
计算机毕业设计:Python全国空气质量与气象监测平台 Flask框架 可视化 数据分析 机器学习 天气 深度学习 AI 空气质量分析(建议收藏)✅
人工智能·python·深度学习·数据挖掘·flask·汽车·课程设计
龙侠九重天1 小时前
C# 机器学习数据处理
开发语言·人工智能·机器学习·ai·c#
IT 行者6 小时前
Web逆向工程AI工具:JSHook MCP,80+专业工具让Claude变JS逆向大师
开发语言·javascript·ecmascript·逆向
程序员 沐阳8 小时前
JavaScript 内存与引用:深究深浅拷贝、垃圾回收与 WeakMap/WeakSet
开发语言·javascript·ecmascript
Mr_Xuhhh8 小时前
Java泛型进阶:从基础到高级特性完全指南
开发语言·windows·python
He1955019 小时前
wordpress搭建块
开发语言·wordpress·古腾堡·wordpress块
老天文学家了9 小时前
蓝桥杯备战Python
开发语言·python
赫瑞9 小时前
数据结构中的排列组合 —— Java实现
java·开发语言·数据结构
初夏睡觉10 小时前
c++1.3(变量与常量,简单数学运算详解),草稿公放
开发语言·c++