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 操作) | 该方法使用提供的函数并行累积给定数组中的每个元素。 |
静态 |
此方法对给定的数组子范围执行 parallelPrefix(对象[],BinaryOperator)。 |
静态 |
该方法使用提供的函数并行累积给定数组中的每个元素。 |
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()
,在这里我们传递startIndex
和endIndex
。在下面的程序中,将只对从第 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
,这可以通过多种方式为特定任务定义。