欢迎访问宙启技术站
智能推送

Java中常见的高阶函数及其用法

发布时间:2023-06-17 04:13:07

Java中的高阶函数指的是函数可以接受函数作为参数或者返回函数作为结果的函数。Java中支持高阶函数的语言特性有Lambda表达式和函数接口。下面我们将介绍常见的高阶函数及其用法。

1. map函数

map函数是一种将函数应用于集合中每个元素,并返回包含所有结果的新集合的函数。在Java中,可以通过流的方式调用map函数,例如:

List<String> list = Arrays.asList("Java", "Python", "C++");

List<Integer> lengths = list.stream().map(s -> s.length()).collect(Collectors.toList());

// lengths: [4, 6, 3]

在这个示例中,map操作接受一个Lambda表达式,该Lambda表达式将每个字符串转换为其长度。最终结果是一个包含所有字符串长度的新列表。

2. filter函数

filter函数是一种将判定函数应用于集合中每个元素,并返回仅包含满足判定函数的元素的新集合的函数。在Java中,也可以通过流的方式调用filter函数,例如:

List<String> list = Arrays.asList("Java", "Python", "C++");

List<String> filtered = list.stream().filter(s -> s.startsWith("J")).collect(Collectors.toList());

// filtered: [Java]

在这个示例中,filter操作接受一个Lambda表达式,该Lambda表达式对每个元素应用startsWith函数,并返回以“J”开头的元素。最终结果是一个只包含“Java”字符串的新列表。

3. reduce函数

reduce函数是一种将操作函数应用于所有集合元素以生成单个结果的函数。在Java中,可以通过流的方式调用reduce函数,例如:

List<Integer> list = Arrays.asList(1, 2, 3, 4);

int sum = list.stream().reduce(0, (a, b) -> a + b);

// sum: 10

在这个示例中,reduce操作接受一个初始值0和一个Lambda表达式,该表达式将两个元素相加。最终结果是所有元素的总和。

4. flatMap函数

flatMap函数是一种将函数应用于集合中每个元素,并将结果压缩到单个集合中的函数。在Java中,也可以通过流的方式调用flatMap函数,例如:

List<List<Integer>> numbers = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4));

List<Integer> flattened = numbers.stream().flatMap(list -> list.stream()).collect(Collectors.toList());

// flattened: [1, 2, 3, 4]

在这个示例中,flatMap操作接受一个Lambda表达式,该表达式返回一个流,该流将内部列表的所有元素串联起来。最终结果是一个包含所有内部元素的新列表。

5. forEach函数

forEach函数是一种将函数应用于集合中每个元素的函数。在Java中,可以通过流的方式调用forEach函数,例如:

List<String> list = Arrays.asList("Java", "Python", "C++");

list.stream().forEach(System.out::println);

在这个示例中,forEach操作接受一个Lambda表达式,该表达式将字符串打印到控制台。最终结果是所有字符串被打印到控制台。

以上是Java中常见的高阶函数及其用法。通过使用这些函数,可以编写更简洁、更易维护的代码,提高生产效率。