Java的Lambda表达式和Stream流的作用以及示例

现在就为你讲解Java的Lambda表达式和Stream流的作用。

现在就为你讲解Java的Lambda表达式和Stream流的作用。

Lambda表达式的作用

Lambda表达式是Java 8引入的新特性,它可以简化代码冗长的写法,同时也可以将函数作为参数传递进去。常见的用法包括在集合中对元素进行过滤、映射、排序等操作,从而避免了繁琐的循环语句。

Lambda表达式的语法可以简单概括为:

(parameter1, parameter2, ..., parameterN) -> {
    //方法主体
}

其中,parameter1parameterN为方法的参数,可以有0个或多个;箭头->前面的部分为参数列表,用小括号括起来;箭头后面的部分为方法的主体,可以是一个完整的代码块,也可以是一行简单的表达式。

Stream流的作用

Stream流是一种数据处理的方式,它可以将数据源(如集合、数组等)转化为连续的数据流,从而在流中进行各种中间操作,最终生成一个结果。Stream流的使用可以让代码更加简洁、清晰,同时也可以提高数据处理的效率。

常见的流操作可以分为中间操作和终端操作。中间操作包括对流进行过滤、映射、排序等操作,它们可以被链接起来形成一个数据处理流水线。终端操作则对流进行最终的聚合、打印等操作,此时流将被消耗掉,无法再次使用。

Lambda表达式和Stream流的示例

下面就来看两个示例,说明Lambda表达式和Stream流的应用:

示例一:使用Lambda表达式和Stream流来对集合进行过滤和排序

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

//使用Lambda表达式和Stream流来对集合进行过滤和排序
List<Integer> res = list.stream()
                        .filter(num -> num % 2 == 0) // 过滤出偶数
                        .sorted((a, b) -> a - b) // 排序
                        .collect(Collectors.toList()); // 转为List

System.out.println(res); // [2, 4]

解释一下这个示例,首先定义了一个整型的集合list,然后使用stream()方法将其转化为一个数据流,再使用filter()方法过滤出其中的偶数元素。这里使用Lambda表达式num -> num % 2 == 0来指定一个判定条件,如果数字模2的结果为0,则表示这个数字是偶数。

接下来,使用sorted()方法将这些偶数按照从小到大的顺序排序,注意这里使用到了ab两个参数,这也是Lambda表达式的特性之一:函数式接口中的参数可以在Lambda表达式中使用。

最后,使用collect()方法生成一个List集合,并将结果打印出来。

示例二:使用Lambda表达式和Stream流来进行单词计数

String str = "hello world, hello Java";

//使用Lambda表达式和Stream流来进行单词计数
Map<String, Long> res = Arrays.stream(str.split("\\W+")) // 将字符串转为流,使用正则表达式进行分割
                             .map(String::toLowerCase) // 转为小写
                             .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); // 统计各个单词的出现次数

System.out.println(res); // {java=1, world=1, hello=2}

该示例演示了如何使用Lambda表达式和Stream流来进行单词计数,首先定义了一个字符串str。然后使用split()方法对其进行分割,这里使用了一个正则表达式\\W+,表示将非单词字符作为分隔符进行分割。

接着使用map()方法将单词转为小写形式,并使用groupingBy()方法将结果按照单词分组,同时使用counting()方法统计各个单词的出现次数。其中Function.identity()表示对各个单词进行分组,Collectors.counting()表示统计各个分组中的元素个数。

最后,使用collect()方法将结果转为一个Map集合,并将结果打印出来。

以上就是关于Java Lambda表达式和Stream流的详细介绍和示例。希望这些内容能够对您有所帮助。

本文标题为:Java的Lambda表达式和Stream流的作用以及示例

基础教程推荐