List numbers = Arrays.asList(-3, 1, 0, -2, 4);
numbers.sort((a, b) -> Math.abs(a) - Math.abs(b));
System.out.println(numbers); // 输出:[0, 1, -2, -3, 4]
在这个例子中,我们使用Lambda表达式`(a, b) -> Math.abs(a) - Math.abs(b)`来定义排序规则。
案例二:过滤列表
假设有一个包含字符串的列表,我们想要过滤出长度大于3的字符串。我们可以使用Lambda表达式和Java 8的流来实现这个目标。
List strings = Arrays.asList(“abc”, “defg”, “hijk”, “lmn”, “opqr”);
List filtered = strings.stream()
.filter(s -> s.length() > 3)
.collect(Collectors.toList());
System.out.println(filtered); // 输出:[defg, hijk, opqr]
在这个例子中,我们使用Lambda表达式`s -> s.length() > 3`来定义过滤规则。
案例三:计算列表的和
假设有一个包含整数的列表,我们想要计算所有整数的和。我们可以使用Lambda表达式和Java 8的流来实现这个目标。
List numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
.reduce(0, (a, b) -> a + b);
System.out.println(sum); // 输出:15
在这个例子中,我们使用Lambda表达式`(a, b) -> a + b`来定义求和规则。
假设有一个电商网站需要从数据库中检索商品信息,并将符合某些条件的商品展示给用户。为了实现这个功能,开发人员可以编写一个方法来检索商品,并使用Lambda表达式来过滤符合条件的商品。以下是这个方法的示例代码:
public List filterProducts(List products, Consumer filter) {
List result = new ArrayList<>();
for (Product product : products) {
filter.accept(product);
if (filter.isSatisfied()) {
result.add(product);
}
}
return result;
}
在这个方法中,开发人员传递了一个Lambda表达式作为参数filter。这个Lambda表达式接受一个Product对象作为输入,并在内部定义了过滤条件。在方法执行过程中,每个商品都会被这个Lambda表达式过滤,如果商品符合过滤条件,则被添加到结果列表中。
### 练习题:
根据以下描述,使用Lambda表达式实现一个函数,该函数接受一个整数列表和一个过滤条件,并返回满足条件的整数的绝对值之和:
public int sumAbsoluteValues(List numbers, Predicate filter) {
int sum = 0;
for (Integer number : numbers) {
if (filter.test(number)) {
sum += Math.abs(number);
}
}
return sum;
}
面试题总结
其它面试题(springboot、mybatis、并发、java中高级面试总结等)
5603)]
[外链图片转存中…(img-xslwJsHs-1714305325604)]
[外链图片转存中…(img-TWgWC5vr-1714305325604)]