JAVA语言 1.8的Lambda表达式实例讲解
小标 2018-09-11 来源 : 阅读 1549 评论 0

摘要:本文主要向大家介绍了JAVA语言 1.8的Lambda表达式实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言 1.8的Lambda表达式实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

Java1.8新增了Lambda表达式,目的是为了方便匿名内部类的使用。
我们先看一个例子:向集合中增加一些系定义的类对象并筛选符合条件的对象进行打印输出
先编写一个接口:里面定义一个方法用来筛选符合条件的对象
public interface ComplexChecker{  public abstract boolean check(Complex c);}
然后写一个自定义类:
public class Complex{  private int imag;  private int real;  public Complex(int imag ,int real)  { this.imag = imag; this.real = real;  }  @Override  public String toString()  { return "imag="+this.imag+"real="+this.real;  }}
现在,我们写一个类,在里面写上主方法:创建一个集合后循环向集合里添加Complex类的对象,每个对象的imag值和real值都是0-1000随机的,然后我们将集合中的对象imag的值大于200并且real的值大于400的对象筛选出来;
public class ComplexTest {    public static void main(String[] args) {        List list = new ArrayList<>();        Random random = new Random();        //向集合添加50个Complex对象        for(int i = 0 ; i < 50 ; i++)        {            list.add(new Complex(random.nextInt(1000), random.nextInt(1000)));        }          //然后我们将集合中imag大于200和real值大于400的对象筛选打印输出          //首先要定义一个匿名内部类来实现ComplexChecker接口中的check()方法        ComplexChecker checker = new ComplexChecker() {                         @Override            public boolean check(Complex c) {                return c.imag>200 && c.real>400;            }        };                 show(list,checker);             }         public static void show(List lists ,ComplexChecker checker)    {        for (Complex com: lists) {            if(checker.check(com))                System.out.println(com);        }    }       }
运行结果:
imag=402real=553imag=726real=565imag=666real=899imag=261real=738imag=923real=702imag=270real=851imag=996real=516imag=232real=890imag=415real=988imag=210real=482imag=366real=650imag=737real=844imag=874real=980imag=875real=607imag=593real=651imag=580real=752imag=899real=984imag=253real=880imag=783real=452imag=360real=910imag=816real=779imag=688real=984
以上是直接使用匿名内部类并重写check方法实现的
现在我们将ComplexTest类的代码稍作修改:
import java.util.ArrayList;import java.util.List;import java.util.Random; public class ComplexTest {    public static void main(String[] args) {        List list = new ArrayList<>();        Random random = new Random();        //向集合添加50个Complex对象        for(int i = 0 ; i < 50 ; i++)        {            list.add(new Complex(random.nextInt(1000), random.nextInt(1000)));        }         //然后我们将集合中imag大于200和real值大于400的对象筛选打印输出         //首先要定义一个匿名内部类来实现ComplexChecker接口中的check()方法//      ComplexChecker checker = new ComplexChecker() {//          //          @Override//          public boolean check(Complex c) {//              return c.imag>200 && c.real>400;//          }//      };//      //      show(list,checker);                 show(list, c->c.imag>200 && c.real>400);             }         public static void show(List lists ,ComplexChecker checker)    {        for (Complex com: lists) {            if(checker.check(com))                System.out.println(com);        }    }      }
上面备注是的代码就是被修改的代码;
我们直接使用Lambda表达式代入show()方法中来实现匿名内部类的简写:
show(list, c->c.imag>200 && c.real>400);
其中 c 就是check方法中的参数,当参数是一个的时候可以省略括号,参数不为一个的时候就需要将参数用小括号括起来:(参数1,参数2,....)->{函数体},当没有参数的时候就写成()->{函数体};jdk会根据上下文判断c的类型,在这里它是Complex类的对象引用,然后->后面跟上你的函数体,如果函数体有多行代码,则需要用“{”和“}”将代码括起来,我这里只有一句话:c.imag>200 && c.real>400,所以大括号可以省略掉。
需要注意的是Lambda表达式只能用于函数式接口,什么是函数式接口呢?
只有一个抽象方法的接口就是函数接口。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved