当前位置: 首页 > news >正文

合肥做网站推广网页设计作业视频网站

合肥做网站推广,网页设计作业视频网站,室内设计3d效果图用什么软件,娱乐公司网站模板Lambda 表达式 文章目录 Lambda 表达式什么是 Lambda 表达式?怎么使用?1 基本语法:2 箭头符号:3 代码演示:4 注意事项 函数式接口1 什么是函数式接口2 常见函数式接口 方法引用(了解)1 什么是方法引用 什么是 Lambda 表达式? Lambda表达式:特殊的匿名内部类&…

Lambda 表达式

文章目录

  • Lambda 表达式
    • 什么是 Lambda 表达式?
    • 怎么使用?
      • 1 基本语法:
      • 2 箭头符号:
      • 3 代码演示:
      • 4 注意事项
    • 函数式接口
      • 1 什么是函数式接口
      • 2 常见函数式接口
    • 方法引用(了解)
      • 1 什么是方法引用

什么是 Lambda 表达式?

Lambda表达式:特殊的匿名内部类,语法更简洁。

  • 允许把函数作为一个方法的参数(函数作为方法参数传递),将代码像数据一样传递。

怎么使用?

1 基本语法:

<函数式接口>  <变量名> = (参数1,参数2...) -> {//方法体};

2 箭头符号:

-> (箭头操作符), -> 将表达式分成两部分

  • 左侧:(参数1,参数2…)表示参数列表
  • 右侧:{}内部是方法体

3 代码演示:

public class TestLambda {public static void main(String[] args) {//Lambda表达式:特殊的匿名内部类,语法更简洁。//示例1: Runnable接口//匿名内部类:Runnable runnable1 = new Runnable() {@Overridepublic void run() {System.out.println("子线程1 开始执行...");}};//简化: Lambda表达式Runnable runnable2 = ()->{System.out.println("子线程2 开始执行...");};//使用new Thread(runnable1).start();new Thread(runnable2).start();//简写: 方法体只有一行代码时new Thread(()-> System.out.println("子线程3 开始执行..."));//示例2: Comparator比较器//匿名内部类Comparator<Integer> cmp1 = new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1 - o2;}};//简化: Lambda表达式Comparator<Integer> cmp2 = (o1, o2) -> o1 - o2;TreeSet<Integer> treeSet1 = new TreeSet<>(cmp1);TreeSet<Integer> treeSet2 = new TreeSet<>(cmp2);}
}

IDEA 快捷键:

  • 在可以使用 Lambda表达式的位置, 按住 Alt + Enter , 即可将原代码用 Lambda表达式书写

4 注意事项

  • 形参列表的数据类型会自动推断。
  • 如果形参列表为空,只需保留() 。
  • 如果形参只有1个,()可以省略,只需要参数的名称即可。
  • 如果执行语句只有一句,且无返回值,{}可以省略,
    若有返回值,则若想省去{},则必须同时省略return,且执行语句也保证只有一句。
  • Lambda不会生成一个单独的内部类文件。

函数式接口

1 什么是函数式接口

  • 如果一个接口只有一个抽象方法,则该接口称之为函数式接口,函数式接口可以使用Lambda表达式,Lambda表达式会被匹配到这个抽象方法上 。
  • @FunctionalInterface 注解检测接口是否符合函数式接口。

代码示例:

interface:

@FunctionalInterface //函数式接口: 只有一个抽象方法
public interface Usb {void service();
}

Test:

public class TestUsb {public static void main(String[] args) {//匿名内部类Usb usb1 = new Usb() {@Overridepublic void service() {System.out.println("连接成功, 开始工作...");}};//Lambda表达式Usb usb2 = () -> System.out.println("连接成功, 开始工作...");}
}

2 常见函数式接口

函数式接口参数类型返回类型说明
Consumer<T> 消费型接口Tvoidvoid accept(T t);对类型为T的对象应用操作
Supplier<T> 供给型接口TT get(); 返回类型为T的对象
Function<T,R> 函数型接口TRR apply(T t);对类型为T的对象应用操作,并返回类型为R类型的对象。
Predicate<T> 断言型接口Tbooleanboolean test(T t);确定类型为T的对象是否满足条件,并返回boolean类型。

TestConsumer:

public class TestConsumer {public static void main(String[] args) {//匿名内部类happy(new Consumer<Double>() {@Overridepublic void accept(Double money) {System.out.println(("聚餐吃饭, 花费:"+ money));}},1000);//Lambda表达式happy(money-> System.out.println("聚餐吃饭, 花费:"+money),2000);}public static void happy(Consumer<Double> consumer, double money) {consumer.accept(money);}
}

TestSupplier:

public class TestSupplier {public static void main(String[] args) {//匿名内部类//获取5个100以内的随机数int[] nums1 = getNums(new Supplier<Integer>() {@Overridepublic Integer get() {return new Random().nextInt(100);}},5);System.out.println(Arrays.toString(nums1));//Lambda表达式//获取10个1000以内的随机数System.out.println(Arrays.toString(getNums(() -> new Random().nextInt(1000),10)));}public static int[] getNums(Supplier<Integer> supplier, int length) {int[] arr = new int[length];for (int i = 0; i < arr.length; i++) {arr[i] = supplier.get();}return arr;}
}

TestFunction:

public class TestFunction {public static void main(String[] args) {//匿名内部类String s1 = handleString(new Function<String, String>() {@Overridepublic String apply(String s) {return s.toUpperCase();}}, "hello");System.out.println(s1);//Lambda表达式System.out.println(handleString(s -> s.toLowerCase(),"HELLO"));}public static String handleString(Function<String, String> function, String s) {return function.apply(s);}
}

TestPredicate:

public class TestPredicate {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("张三");list.add("张三锋");list.add("张耕耘");list.add("韩羽");list.add("张利");list.add("田美丽");//匿名内部类List<String> list1 = filter(new Predicate<String>() {@Overridepublic boolean test(String s) {return s.startsWith("张");}}, list);System.out.println(list1);//Lambda 表达式List<String> list2 = filter(s -> s.startsWith("田"), list);System.out.println(list2);}public static List<String> filter(Predicate<String> p, List<String> src) {ArrayList<String> list = new ArrayList<>();for (String s : src) {if (p.test(s)){list.add(s);}}return list;}
}

方法引用(了解)

1 什么是方法引用

  • 方法引用是Lambda表达式的一种简写形式。
    • 如果Lambda表达式方法体中只是调用一个特定的已经存在的方法
    • 这个方法的参数和返回值和接口中的方法的参数和返回值保持一致

代码演示:

形式1 : 对象::实例方法

public class TestMethodRef {public static void main(String[] args) {Consumer<String> consumer1 = s -> System.out.println(s);Consumer<String> consumer2 = System.out::println;consumer1.accept("xxx");consumer2.accept("yyy");}
}res:
xxx
yyy
http://www.yayakq.cn/news/56879/

相关文章:

  • 如何制作一个单页网站如何上传安装网站模板
  • 宁波做网站优化价格成立网站是不是需要先成立公司
  • 受欢迎的手机网站建设学习怎样建网站
  • ppt模板网站哪个免费wordpress协同插件
  • 如何避免网站被攻击石家庄网站推广报价
  • 服装网站设计方案广州网站设计我选刻
  • 龙门惠州网站建设手机 网站开发软件有哪些
  • 外贸网站建设公司教程dw怎么做打开网站跳出提示
  • 南京高端网站建设公司北京网站推广的公司
  • 枣庄住房和城乡建设厅网站保定网站建设价格低
  • 智慧团建网站登录忘记密码单位网址怎么编
  • 商丘哪里有网站建设多多电影免费播放
  • 北京高端 网站建设延吉市网站建设
  • 网站meta标签怎么做鹤山市城乡住房建设部网站
  • 网站建设的功能需求文档怎么做网站海外运营推广
  • joomla网站如何加入会话功能wordpress添加新建标签
  • 网站域名和网站网址免费大型网站
  • 修改公司网站网页可以加速浏览器的加速器
  • 莆田有建设网站的公司码动画设计专业哪个学校比较好
  • 给个网站能看的网站开发公司 重庆
  • 国外购物网站欣赏工业设计创意网站
  • 南昌seo网站设计notefolio设计官网
  • 多语言网站建设费用企业网页制作要注意什么
  • 建网站是自己做还是用CMS网站开发成本评估
  • 安徽网站排名优化公司网站评论怎么做的
  • 网站建设制作与运营清洁公司
  • 腾讯网页版qq登录入口多产品的网站怎么做seo
  • 关于网站建设的工作计划免费建设小说网站
  • 自己的网站怎么创建wordpress会员付费系统
  • 化妆品网站优势网站建设常用的工具