6.8.5 使用Lambda表达式调用Arrays的类方法

6.8.5 使用Lambda表达式调用Arrays的类方法

Arrays类的有些方法需要ComparatorXxxOperatorXxxFunction等接口的实例,这些接口都是函数式接口,因此可以使用Lambda表达式来调用Arrays的方法。

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Arrays;

public class LambdaArrays {
public static void main(String[] args) {
String[] strArray = new String[] { "Java", "Hello", "World", "HTML", "JavaScript" };

Arrays.parallelSort(strArray, (o1, o2) -> o1.length() - o2.length());
System.out.println("排序:"+Arrays.toString(strArray));

int[] intArray = new int[] { 3, -4, 25, 16, 30, 18 };
// left代表数组中前一个所索引处的元素,计算第一个元素时,left为1
// right代表数组中当前索引处的元素
Arrays.parallelPrefix(intArray, (left, right) -> left * right);
System.out.println("累积:"+ Arrays.toString(intArray));

long[] longArray = new long[5];
// operand代表正在计算的元素索引
Arrays.parallelSetAll(longArray, operand -> operand * 5);
System.out.println("索引*5:"+Arrays.toString(longArray));
}
}

运行结果:

1
2
3
排序:[Java, HTML, Hello, World, JavaScript]
累积:[3, -12, -300, -4800, -144000, -2592000]
索引*5:[0, 5, 10, 15, 20]