当前位置: 首页 > 图灵资讯 > java面试题> 什么是Lambda表达式?请举例说明

什么是Lambda表达式?请举例说明

来源:图灵教育
时间:2024-08-31 13:20:32

什么是Lambda表达式?

Lambda表达式是一种简洁的方式来表示一个可以传递的匿名函数(没有名字的函数)。在Java中,Lambda表达式主要用来简化代码,特别是在处理集合和流(Streams)的时候。它可以让代码更简洁、更易读。

Lambda表达式的基本语法

Lambda表达式的基本语法如下:


 

(parameters) -> expression

或者,如果有多条语句,可以使用大括号:


 

(parameters) -> { statements; }

举个简单的例子

假设我们有一个列表,里面有一些数字,我们想要对这些数字进行排序。以前,我们可能会这样写:


 


List<Integer> numbers = Arrays.asList(5, 3, 8, 1, 9); Collections.sort(numbers, new Comparator<Integer>() { @Override public int compare(Integer a, Integer b) { return a.compareTo(b); } });

使用Lambda表达式后,我们可以简化代码,变得更简洁:


 


List<Integer> numbers = Arrays.asList(5, 3, 8, 1, 9); numbers.sort((a, b) -> a.compareTo(b));

解释上面的例子

  1. 原来的代码:我们使用了一个匿名内部类Comparator来定义排序的规则,需要写很多样板代码。

  2. 使用Lambda表达式的代码:我们用(a, b) -> a.compareTo(b)来代替匿名内部类。这里的(a, b)是参数列表,a.compareTo(b)是要执行的表达式。

再举一个例子:过滤列表中的元素

假设我们有一个字符串列表,我们想要过滤出所有长度大于3的字符串。以前,我们可能会这样写:


 


List<string> strings = Arrays.asList("apple", "banana", "kiwi", "pear"); List<String> result = new ArrayList<>(); for (String s : strings) { if (s.length() > 3) { result.add(s); } }

使用Lambda表达式和Stream API后,我们可以这样写:


 


List<String> strings = Arrays.asList("apple", "banana", "kiwi", "pear"); List<String> result = strings.stream() .filter(s -> s.length() > 3) .collect(Collectors.toList());

解释上面的例子

  1. 原来的代码:我们使用了一个for循环和if语句来过滤字符串。

  2. 使用Lambda表达式的代码:我们使用strings.stream()创建一个流,然后用filter方法过滤出长度大于3的字符串。s -> s.length() > 3是一个Lambda表达式,表示对每个字符串 s,如果它的长度大于3,就保留它。最后用collect(Collectors.toList())将结果收集到一个新的列表中。