lambda表达式

    Lambda表达式是Java 8引入的新特性,是一种函数式编程的概念。它可以使代码更加简洁,并且提高代码的可读性和可维护性。
    Lambda表达式是一种匿名函数,它没有名称,但可以被看作是函数的一种简写形式。Lambda表达式主要由两部分组成:参数列表和函数体。其中,参数列表定义了方法可以接受的参数类型和数量,而函数体则是执行该方法的代码块。
Lambda表达式的语法格式如下:
(p1, p2, …, pN) ->; expression

(p1, p2, …, pN) ->; { statements; }
其中,第一个部分是参数列表,用括号括起来;箭头->;用于连接参数列表和函数体,意思是“执行”;第二个部分是函数体,可以是表达式或一个代码块。
Lambda表达式使用时可以替代匿名内部类的写法,常用于函数式接口的实现。例如:

Zoo dog = () ->; System.out.println("汪汪队");
Work w = new Work();
w.move();


这个例子中,使用了Lambda表达式替代了接口的匿名内部类的实现,使代码更加简洁,并且容易读懂。

使用Lambda表达式实现函数接口的步骤如下:

  1. 定义一个函数式接口,该接口只有一个抽象方法;

  2. 在调用时,使用Lambda表达式直接实现该接口的抽象方法

此外,Lambda表达式可以使用方法引用来代替Lambda表达式中的代码,使得代码更加简洁。方法引用是指用方法的名字来代替Lambda表达式,它只适用于那些只调用一个方法的Lambda表达式。在Java中有四种类型的方法引用 :

  1. 引用静态方法:类名::方法名

  2. 引用实例方法:对象引用::方法名

  3. 引用构造方法:类名::new

  4. 引用成员方法:类名::方法名

接下来是一些例子供参考

1.引用静态方法时

import java.util.Arrays;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("hello", "world", "java", "lambda");

        // 使用Lambda表达式和静态方法引用筛选长度大于5的字符串
        words.stream().filter(Test::judge).forEach(System.out::println);
    }

    public static boolean judge(String s) {
        return s.length() > 5;
    }
}

这个例子中,我们首先创建了一个包含一组整数的列表words。然后,我们使用stream()方法将该列表转换成流对象。接着,我们使用filter()方法对流中的元素进行筛选,表示如果元素长度大于5,则返回true。最后,我们使用forEach()方法将符合条件的元素输出到控制台上。 

(流对象(Stream)像一个加工工厂的流水线,把未加工的物料(集合、数组、文件等)进行不同的处理变成了加工好的成品。将原始数据源输入,经过中间流操作,再输出一份新的、经过处理后的数据流,这个数据流包含了我们需要的处理结果)

 2.引用实例方法

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public int getAge() {
        return age;
    }
}

List<Person> persons = new ArrayList<>();
persons.add(new Person("张三", 30));
persons.add(new Person("李四", 20));
persons.add(new Person("王五", 25));

Collections.sort(persons, Comparator.comparing(Person::getAge));

for (Person person : persons) {
    System.out.println(person.getName() + " " + person.getAge());
}

其中,Person::getAge就是引用动态方法的方式,表示对person对象的年龄属性进行比较。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*kkkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值