如何在Java 8中引入lambda表达式

本篇文章给大家分享的是有关如何在Java 8中引入lambda表达式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

构造线程:

如何在Java 8中引入lambda表达式

我们要想在另一个线程中执行一些代码逻辑时,通常会将代码放在一个实现Runnable接口的run方法当中,如下图:

publicstaticvoidmain(String[]args){
myThreadt=newmyThread();

}
classmyThreadimplementsRunnable{
@Override
publicvoidrun(){
System.out.println("放入你想执行的代码");
}
}

你写这段代码的目的就是想开启新的线程来执行你定制的代码,为此你创建了myThread。

接着我们看下构造比较器:

publicstaticvoidmain(String[]args){
List<Integer>list=newArrayList<>();
list.add(2);
list.add(5);
list.add(1);
list.add(4);
list.add(3);
Comparator<Integer>comparator=newComparator<Integer>(){
@Override
publicintcompare(Integero1,Integero2){
returno2-o1;
}
};
Collections.sort(list,comparator);
}

sort 方法会不断调用compare 方法,对顺序不对的元素进行重新排序,直到有序为止。你写比较器的目的就是给Collections的sort方法传递一段比较逻辑的代码片段,这段代码会被整合到排序排序逻辑中,为此你写了一个类和一个方法。

上述两个例子你会看到它们的相似点,将一段代码传递给其他调用者(一个线程池或者一个排序方法),这段代码会在新的方法中被调用。

但是,在Java8出现之前,如果你想传递一段代码到另一个方法里是很不方便的,因为Java是一个面向对象的语言,因此你要构建一个属于某个类的对象,由它的某个方法来放置你想传递的代码块。而在一些其他语言中可以直接传递代码块,比如JS。为此,Java决定加入了lambda表达式的语法糖。

lambda改造

对于传入比较器代码块,我们的目的是想传入一段比较逻辑,利用lambda表达式可以:

lambda表达式的语法格式是:参数->一个表达式,如果想传入的代码无法用一个表达式表示,则可以用 参数->{多个表达式}。如果没有参数需要传递,则可以用()->表达式的形式。

publicstaticvoidmain(String[]args){

List<Integer>list=newArrayList<>();
list.add(2);
list.add(5);
list.add(1);
list.add(4);
list.add(3);

Collections.sort(list,(one,two)->{
System.out.println("one="+one);
System.out.println("two="+two);
returntwo-one;
});
}

编译器会解析出来 one 与 two 是原先接口compare方法的入参,并自动赋予Integer类型。

对于构造线程,我们的目的就是想传入一段线程执行的代码,利用lambda表达式可以这样做:

publicstaticvoidmain(String[]args){
newThread(()->{
for(inti=0;i<100;i++){
System.out.println("这是一个线程"+i);
}
}).start();
for(inti=100;i<200;i++){
System.out.println("这是主线程"+i);
}
}

以上就是如何在Java 8中引入lambda表达式,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注恰卡编程网行业资讯频道。

发布于 2021-05-10 20:39:09
收藏
分享
海报
0 条评论
166
上一篇:如何引入ItemLoader和Item预处理函数 下一篇:怎么在vue中引入高德地图
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码