Java Arrays.parallelPrefix()方法

原文:https://www.studytonight.com/java-util/java-arrays-parallelprefix-method

在本文中,我们将学习 Java 中Arrays类的parallelPrefix()方法。此方法对具有当前元素和上一个元素的数组元素执行操作。当我们需要对整个数组执行操作时,这种方法比循环更有效。

句法

下面的方法将接收一个数组IntBinaryOperator.这个运算符执行两个操作数的运算。这个操作数可以执行简单的运算,就像算术运算一样简单。

static void    parallelPrefix?(int[] array, IntBinaryOperator op)

parallelPrefix()方法重载方法列表

此表包含parallelPrefix()方法的所有重载变体。

方法 描述
静态 void parallelPrefix(double[]数组,int fromIndex,int toIndex,DoubleBinaryOperator op) 此方法对给定的数组子范围执行 parallelPrefix(double[],DoubleBinaryOperator)。
静态 void parallelPrefix(double[]数组,DoubleBinaryOperator op) 该方法使用提供的函数并行累积给定数组中的每个元素。
静态 void parallelPrefix(int[]数组,int fromIndex,int toIndex,IntBinaryOperator op) 此方法对给定的数组子范围执行 parallelPrefix(int[],IntBinaryOperator)。
静态 void parallelPrefix(int[]数组,IntBinaryOperator op) 该方法使用提供的函数并行累积给定数组中的每个元素。
静态 void parallelPrefix(long[]数组,int fromIndex,int toIndex,LongBinaryOperator op) 此方法对给定的数组子范围执行 parallelPrefix(long[],LongBinaryOperator)。
静态 void parallelPrefix(long[]数组,LongBinaryOperator 操作) 该方法使用提供的函数并行累积给定数组中的每个元素。
静态 void parallelPrefix(T[]数组,int fromIndex,int toIndex,BinaryOperator op)</t> 此方法对给定的数组子范围执行 parallelPrefix(对象[],BinaryOperator)。
静态 void parallelPrefix(T[]数组,BinaryOperator op)</t> 该方法使用提供的函数并行累积给定数组中的每个元素。

parallelPrefix()方法示例

在下面的例子中,我们可以看到给定的数组arr 有数字 1 到 7,然后我们创建相加的IntBinaryOperator ,然后我们在数组上应用parallelPrefix(),它将变成顺序和。

import java.util.Arrays;
import java.util.function.IntBinaryOperator;
class StudyTonight { 
    public static void main(String args[]) 
    { 
        int arr[] = { 1, 2, 3, 4, 5, 6, 7};
        IntBinaryOperator op = (x, y) -> x + y;
        Arrays.parallelPrefix(arr,op); 
        for(int num:arr)
        {
            System.out.print(num+" ");
        }
    } 
}

1 3 6 10 15 21 28

通过指定范围的parallelPrefix()方法示例

由于 Array 类的大多数方法都支持指定数组的范围,所以我们有另一个重载方法parallelPrefix(),在这里我们传递startIndexendIndex。在下面的程序中,将只对从第 2 个索引到第 10 个索引的数组元素进行更改。

import java.util.Arrays;
import java.util.function.IntBinaryOperator;
class StudyTonight { 
    public static void main(String args[]) 
    { 
        int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
        IntBinaryOperator op = (x, y) -> x + y;
        Arrays.parallelPrefix(arr,2,10,op); 
        for(int num:arr)
        {
            System.out.print(num+" ");
        }
    } 
}

1 2 3 7 12 18 25 33 42 52 11 12 13 14 15

其重载方法示例

还有其他重载方法来支持不同类型的数组和范围。

此方法可以接收基元和非基元数据类型的数组,并执行 BinaryOperator 定义的操作。

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    { 
        //Example static void parallelPrefix(double[] array, int fromIndex, int toIndex, DoubleBinaryOperator op)
        double doubleArray[] = {5.1, 6.2, 7.2, 8.1, 9.4, 10.2, 11.6, 12.96, 13.2, 14.25, 15.6, 16.4, 17.2}; 
        Arrays.parallelPrefix(doubleArray, 0, 5, (n1, n2) -> n1 + n2);
        System.out.println(Arrays.toString(doubleArray));

        //Example static void parallelPrefix(double[] array, DoubleBinaryOperator op)
        Arrays.parallelPrefix(doubleArray, (n1, n2) -> n1 + n2);
        System.out.println(Arrays.toString(doubleArray));

        //Example static void parallelPrefix(int[] array,int fromIndex, int toIndex, IntBinaryOperator op)
        int intArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        Arrays.parallelPrefix(intArray, 2, 6, (n1, n2) -> n1 + n2);
        System.out.println(Arrays.toString(intArray));

        //Example static void parallelPrefix(int[] array, IntBinaryOperator op)
        Arrays.parallelPrefix(intArray, (n1, n2) -> n1 + n2);
        System.out.println(Arrays.toString(intArray));

        //Example static void parallelPrefix(long[] array,int fromIndex, int toIndex, LongBinaryOperator op)
        long longArray[] = {11, 12, 31, 41, 15, 16, 17, 18, 19, 18};
        Arrays.parallelPrefix(longArray, 3, 8, (n1, n2) -> n1 + n2);
        System.out.println(Arrays.toString(longArray));

        //Example static void parallelPrefix(long[] array, LongBinaryOperator op)
        Arrays.parallelPrefix(longArray, (n1, n2) -> n1 + n2);
        System.out.println(Arrays.toString(longArray));

    }
}

【5.1、11.3、18.5、26.6、36.0、10.2、11.6、12.96、13.2、14.25、15.6、16.4、17.2】 【5.1、16.4、34.9、61.5、97.5、107.7、119.3、132.26、145.4999999999

结论

在本教程中,我们学习了如何使用parallelPrefix() 方法。我们还可以对不同的Arrays类型使用不同的重载方法。为了在数组上执行顺序操作,我们需要BinaryOperator ,这可以通过多种方式为特定任务定义。