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

Java集合函数:介绍常用的集合函数,如map、filter、reduce等

发布时间:2023-06-10 18:55:40

Java集合函数是用来操作集合元素的高级函数。它们通过使用函数式接口和Lambda表达式来实现对集合元素的处理和转换。常用的集合函数包括map、filter、reduce等。本文将介绍这些常用的集合函数。

一、 map函数

map函数是一种转换函数,它将输入集合的每个元素转换成新的元素,并输出新的集合。它的语法示例如下:

<R> Stream<R> map(Function<? super T, ? extends R> mapper)

其中,Function接口接收一个参数,返回一个结果,对应输入集合元素和输出集合元素的类型。map函数的工作原理是:

1. 对于集合中的每个元素,map函数都会逐个调用Function接口实现的apply方法,并将结果放入一个新的集合中。

2. 最终map函数返回一个Stream对象,该对象包含了所有转换后的元素。

例如,下面的代码将一个Integer集合中的元素加1,并输出新的集合:

List<Integer> numList = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> newList = numList.stream()
    .map(num -> num + 1)
    .collect(Collectors.toList());
System.out.println(newList);    // [2, 3, 4, 5, 6]

二、 filter函数

filter函数是一种过滤函数,它可以用于过滤输入集合中不符合指定条件的元素,输出符合条件的集合。它的语法示例如下:

Stream<T> filter(Predicate<? super T> predicate)

其中,Predicate接口接收一个参数,返回一个boolean类型的结果,对应输入集合元素的类型。filter函数的工作原理是:

1. 对于集合中的每个元素,filter函数都会逐个调用Predicate接口实现的test方法,如果返回true,则保留该元素;如果返回false,则过滤该元素。

2. 最终filter函数返回一个Stream对象,该对象包含了所有符合条件的元素。

例如,下面的代码过滤掉一个String集合中长度小于等于3的字符串,并输出新的集合:

List<String> wordList = Arrays.asList("apple", "banana", "orange", "kiwi", "peach");
List<String> newList = wordList.stream()
    .filter(word -> word.length() > 3)
    .collect(Collectors.toList());
System.out.println(newList);    // [apple, banana, orange, peach]

三、 reduce函数

reduce函数是一种聚合函数,它接收一个初始值和一个BinaryOperator接口实现对象,并将输入集合中的所有元素依次累加起来生成一个结果。它的语法示例如下:

T reduce(T identity, BinaryOperator<T> accumulator)

其中,T是输入集合元素和输出结果的类型。reduce函数的工作原理是:

1. 以输入集合的第一个元素为初始值,调用BinaryOperator接口实现的apply方法并给出初始值和第二个元素作为参数,得到一个结果。

2. 再次以第一次的结果为初始值,调用BinaryOperator接口实现的apply方法并给出结果和第三个元素作为参数,得到新的结果。

3. 以此类推,逐个遍历输入集合中的所有元素,累加出最终的结果。

例如,下面的代码将一个Integer集合中的元素求和,并输出结果:

List<Integer> numList = Arrays.asList(1, 2, 3, 4, 5);
int sum = numList.stream()
    .reduce(0, (a, b) -> a + b);
System.out.println(sum);    // 15

总结

Java集合函数是一种强大的函数式编程工具,它可以简化代码并提高代码的可读性和可维护性。常用的集合函数包括map、filter、reduce等,它们分别用于转换、过滤和聚合集合中的元素。熟练掌握这些函数将有助于编写清晰、高效、可维护的Java代码。