因为一个人就@全体 虽然没提名字但是说的意思和报身份证没区别, 我自己看着都尴尬…
标题就是事情的经过,和同事的聊天记录在最下面
前言
Lambda表达式是优化代码的工具,使得代码更简洁、易读,符合现代开发的趋势,以及推动函数式编程在Java开发中的流行。
对于个人开发者来说,是否使用Lambda表达式是可以选择的。但如果作为企业团队的一员,其他成员都在使用Lambda表达式,而你不熟悉它,可能会导致与团队成员的协作困难,并给人一种对新技术不了解、技术能力较差的印象。
简单代码案例和for循环对比
1. for循环
List<String> strings = Arrays.asList("Hello", "World", "Lambda", "Expression");
for (String s : strings) {
System.out.println(s.length());
}
Lambda表达式的代码
List<String> strings = Arrays.asList("Hello", "World", "Lambda", "Expression");
strings.forEach(s -> System.out.println(s.length()));
这里简单介绍几个函数,
forEach:forEach方法用于迭代列表中的每个元素,并对其进行指定的操作。可以使用Lambda表达式传递要执行的操作。常用于遍历列表并对每个元素执行某个操作,如打印、修改等。
List<String> fruits = Arrays.asList("Apple", "Banana", "Orange");
fruits.forEach(fruit -> System.out.println(fruit)); // 打印每个水果名称
stream:stream方法用于将列表转换为一个流,以便进行各种操作,如过滤、转换、排序、聚合等。通过使用流,可以对列表中的元素进行链式操作,提供了更多的灵活性和功能。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> filteredNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList()); // 过滤出偶数
int sum = numbers.stream()
.reduce(0, Integer::sum); // 求和
filter:filter方法用于根据指定条件筛选出列表中符合条件的元素,返回一个新的流。该方法接受一个Predicate函数式接口作为参数,用于定义筛选条件。常用于根据某个条件过滤出符合条件的元素。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> filteredNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList()); // 过滤出偶数
collect(Collectors.toList()):collect方法用于将流中的元素收集到一个新的列表中。Collectors.toList()是一个静态方法,用于将流中的元素收集到一个新的List对象中。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> collectedList = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList()); // 过滤出偶数并收集到新的列表中
总结
forEach用于遍历列表并对每个元素执行操作,stream将列表转换为流以进行更复杂的操作,filter根据条件筛选出符合条件的元素,而**collect(Collectors.toList())**用于将流中的元素收集到新的列表中
Lambda表达式和传统的for循环,一些常见的对比
和for循环对列表进行处理:
遍历列表并打印每个元素:
List<String> fruits = Arrays.asList("Apple", "Banana", "Orange");
// 使用Lambda表达式
fruits.forEach(fruit -> System.out.println(fruit));
// 使用for循环
for (String fruit : fruits) {
System.out.println(fruit);
}
对列表中的元素进行求和:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// 使用Lambda表达式
int sum1 = numbers.stream()
.reduce(0, Integer::sum);
System.out.println(sum1);
// 使用for循环
int sum2 = 0;
for (int number : numbers) {
sum2 += number;
}
System.out.println(sum2);
过滤列表中的元素并生成新的列表:
java
Copy code
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// 使用Lambda表达式
List<Integer> filteredNumbers1 = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(filteredNumbers1);
// 使用for循环
List<Integer> filteredNumbers2 = new ArrayList<>();
for (int number : numbers) {
if (number % 2 == 0) {
filteredNumbers2.add(number);
}
}
System.out.println(filteredNumbers2);
以上是使用Lambda表达式和for循环对列表进行处理的几个常见案例。仔细看很容易看懂,遇到企业情况如果要求严格尽量少用for循环
瓜
飞书有水印我涂掉了剩下全部匿名
经典最菜的笑的最开心🤡🤡🤡