返回顶部
首页 > 资讯 > 精选 >lambda 的入门详解
  • 225
分享到

lambda 的入门详解

2023-06-02 10:06:18 225人浏览 薄情痞子
摘要

  1.为什么用lambda  简化我们的操作  举个例子  创建一个线程  new Thread(new Runnable() {  @Override  public void run() {  System.out.println(&

  1.为什么用lambda

  简化我们的操作

  举个例子

  创建一个线程

  new Thread(new Runnable() {

  @Override

  public void run() {

  System.out.println("hh");

  }

  }).start();

  以前我们快速创建一个线程要这样

  现在用lambda

  new Thread(()-> System.out.println("lambda-->hh")).start();

  一个更重要的原因是Java 以后为了更好的函数式编程

  2.lambda怎么用

  2.1 lambda的使用场景

  lambda只能用在函数式接口,函数式接口就是一个接口里面只有一个抽象方法

  * @author Arthur van Hoff

  * @see java.lang.Thread

  * @see java.util.concurrent.Callable

  * @since jdk1.0

  */

  @FunctionalInterface

  public interface Runnable {

  

  public abstract void run();

  }

  可以通过@FunctionalInterface来表示是一个函数式接口

  Java 为我们创建了很多常用的函数式接口,不用我们一个一个来创建

  四大内置函数式接口

  Consumer< T > 消费性 接口: void accept(T t);

  Supplier< T > 供给型接口 : T get();

  Function< T , R > 函数式接口 : R apply (T t);

  Predicate< T > 断言形接口 : boolean test(T t);

  2.2 使用

  (参数)->{方法体}

  new Thread(()-> { System.out.println("lambda-->hh");}).start();

  其实到这就可以熟练的用lambda,但是它还能简化,你说气不气=。=

  1.一个参数时可省略()

  Consumer consumer = x -> System.out.println(x);

  consumer.accept("1个参数省略()");

  2.方法体只有一条语句省略{}

  == 不管它是否需要有返回值==

  Function function= x-> x;

  Integer apply = function.apply(1);

  System.out.println(apply);

  3.类型推断

  lambda 表达式的参数类型可省略不写

  聪明的你肯定发现了为什么参数 不需要写类型,为什么不需要,Java会根据泛型来推断

  你也可以指定参数的类型,但是没必要

  Consumer consumer = (String x) -> System.out.println(x);

  3.方法引用

  System.out.println("呼呦呦");

  public void println(String x) {

  synchronized (this) {

  print(x);

  newLine();

  }郑州人流医院哪家好 Http://mobile.zhongyuan120.com/

  }

  println是一个参数没有返回

  这和Consumer 消费者接口很符合啊,下面这样写可不可以简化啊(就nm事多)

  Consumer consumer = x -> System.out.println(x);

  简化版

  Consumer consumer1 = System.out::println;

  方法引用 参数与返回值需要一致

  

--结束END--

本文标题: lambda 的入门详解

本文链接: https://lsjlt.com/news/229821.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • lambda 的入门详解
      1.为什么用lambda  简化我们的操作  举个例子  创建一个线程  new Thread(new Runnable() {  @Override  public void run() {  System.out.println(&...
    99+
    2023-06-02
  • Hbase入门详解
    1、hbase概述 1.1 hbase是什么 hbase是基于hdfs进行数据的分布式存储,具有高可靠、高性能、列存储、可伸缩、实时读写的nosql数据库。 hbase可以存储海量的数据,并且后期查询性能很高,可以实现上...
    99+
    2022-06-04
    hbase讲解 hbase入门详解 hbase的集群结构 hbase集群安装部署
  • SELinux 入门详解
    回到 Kernel 2.6 时代,那时候引入了一个新的安全系统,用以提供访问控制安全策略的机制。这个系统就是 Security Enhanced linux (SELinux),它是由美国国家安全局(NSA)贡献的,它为...
    99+
    2022-06-04
    SELinux 入门
  • Anaconda入门详解
    Anaconda简介 Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学(数据科学、机器学习、大数据处理和预测分析),Anaconda致力于简化包管理和部署。Anaconda的包使用软件包管理系统Conda进行...
    99+
    2023-01-31
    详解 入门 Anaconda
  • 一分钟入门Python Lambda表达式:从入门到精通
    # 计算列表中每个元素的平方 numbers = [1, 2, 3, 4, 5] squared_numbers = list(map(lambda x: x ** 2, numbers)) print(squared_number...
    99+
    2024-02-09
    Lambda 表达式 匿名函数 函数式编程
  • SpringMVC注解的入门实例详解
    目录1、在 web.xml 文件中配置前端处理器2、在 springmvc.xml 文件中配置处理器映射器,处理器适配器,视图解析器3、编写 Handler4、编写 视图 index...
    99+
    2024-04-02
  • elk入门概念详解
    开始第一步我们现在开始进行一个简单教程,它涵盖了一些基本的概念介绍,比如索引(indexing)、搜索(search)以及聚合(aggregations)。通过这个教程,我们可以让你对Elasticsear...
    99+
    2024-04-02
  • 详解Unity入门之GameObject
    目录Input和InputManagerMonoBehaviour总结GameObject和Component GameObject是游戏场景中真实存在的,而且有位置的一个物件 Co...
    99+
    2024-04-02
  • SpringBoot快速入门详解
    Spring Boot是什么? Spring Boot并不是什么新的框架,它是对Spring的缺点进行了改善和优化,Spring Boot默认了很多的框架使用方式,像maven整合了...
    99+
    2024-04-02
  • vite.config.js配置入门详解
    目录1 如何创建vite项目?2 如何让vite项目启动时自动打开浏览器?3vite启动默认端口为3000?如何更改默认端口?4 vite如何设置热更新?5vite中如何配置别名路径...
    99+
    2024-04-02
  • Redis入门教程详解
    目录Redis一、Redis基本数据结构1. 字符串 (String)2. 散列(hash)3. 列表(list)4. 集合(Set)5. 有序集合(sorted set)二、Red...
    99+
    2024-04-02
  • python库h5py入门详解
    目录h5py简单介绍1.创建一个h5py文件2.创建dataset数据集3.创建group组本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍,作者刚接触h5p...
    99+
    2024-04-02
  • SpringBoot入门教程详解
    目录一、SpringBoot简介二、SpringBoot入门案例1、创建项目2、编写 Controller 类3、启动项目4、使用 Postman 测试三、SpringBoot VS...
    99+
    2024-04-02
  • Java之MyBatis入门详解
    目录一、三层架构Java中的三层架构指(1)三层对应的包(2)三层中类的交互(3)三层对应的处理框架(4)使用三层架构有点(5)缺点二、MyBatis1、官方简介2、百度基本信息&n...
    99+
    2022-12-21
    Java MyBatis入门 Java MyBatis MyBatis入门
  • ReactiveProgramming入门概念详解
    目录正文Reactive ProgrammingReactive StreamsSpring ReactorReactive Streams、Reactor和WebFlux 区别?正...
    99+
    2024-04-02
  • Python入门教程(二十)Python的Lambda表达式
    目录语法lambda 函数可接受任意数量的参数:为何使用 Lambda 函数?lambda 函数是一种小的匿名函数。 lambda 函数可接受任意数量的参数,但只能有一个表达式。 语...
    99+
    2023-05-17
    Python 表达式 Python Lambda
  • Go中的gRPC入门教程详解
    目录Go GRPC 入门1,安装包2,gRPC 服务端3,gRPC 客户端4,编译运行5,其它GRPCProtobuf buffer字段类型字段规则ProtobufgRPC 四种服务...
    99+
    2024-04-02
  • Android入门之Service的使用详解
    目录简介什么是ServiceService的生命周期startService和bindService的区别startService ()时Service的生命周期bindServic...
    99+
    2022-12-08
    Android Service使用 Android Service
  • Android入门之bindService的用法详解
    目录介绍来看例子全代码Service注册Service类(坑来了)主运行类-MainActivity.java运行效果介绍 在前一天我们介绍了Android中有两种启动Service...
    99+
    2022-12-08
    Android bindService用法 Android bindService
  • C++入门之list的使用详解
    目录前言构造的使用1 构造空list2 构造含n个值为val的元素3 拷贝构造4 用迭代区间迭代器接口1 正常迭代接口2 逆向迭代接口容量接口元素访问数据修改头插头删尾插尾删pos位...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作