新来的资深java不会lambda表达式,中级开发都笑拉了--lambda流这么难吗,教你怎么玩早学早吃香

因为一个人就@全体 虽然没提名字但是说的意思和报身份证没区别, 我自己看着都尴尬…
新来的资深java不会lambda表达式,中级开发都笑拉了--lambda流这么难吗,教你怎么玩早学早吃香_第1张图片
标题就是事情的经过,和同事的聊天记录在最下面

前言

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循环

新来的资深java不会lambda表达式,中级开发都笑拉了--lambda流这么难吗,教你怎么玩早学早吃香_第2张图片
飞书有水印我涂掉了剩下全部匿名
经典最菜的笑的最开心

你可能感兴趣的:(java,java,开发语言,lambda,mybatis,jvm)