工具技巧和读文档 | 读函数式编程接口文档 | 匿名内部类 | lambda表达式 |IDEA

news2024/10/5 14:14:34

Function接口,函数式接口
按入参返回值分类,大概分为4种类型,再加上多个入参就又多了Bi开头的两种。
有Ctrl+P的时候不懂参数列表该写啥,就先Ctrl+ALT看下入参类型的相关实现类!
一些实用的快捷键:Ctrl + P看参数列表,Ctrl + Q 看接口文档
一些单词:匿名的 anonymous; 二进制的:binary
书籍推荐:java8函数式编程

文章目录

    • 你是否很好奇函数式编程的传参到底要怎么传,接收返回值到底要用什么类型接收???
      • Stream流最常见的应用场景
      • java函数式接口印象
      • 看到一个陌生的参数列表要怎么传参
      • 匿名内部类和Lambda表达式的转化
      • Function接口的入参和返回值
      • demo
      • 其他有意义的问题

你是否很好奇函数式编程的传参到底要怎么传,接收返回值到底要用什么类型接收???

Stream流最常见的应用场景

在这里插入图片描述

java函数式接口印象

  • 消费型 Consumer (有入参,无返回值)
  • 提供者型 Supplier (无入参,有返回值)
  • 常见型 Function(有入参,有返回值)

上述类型的入参都是单个入参的。像BiConsumer, BiFunction这种的入参是多个入参
Bi 可以 理解为 binary,二进制的,两个的
在这里插入图片描述

看到一个陌生的参数列表要怎么传参

查看入参的实现类
(当时Ctrl+P查看接口的参数列表时,看到BinaryOperator是入参实在不知道要传啥参数。后来查Ctrl+alt看了BinaryOperator的实现类,才发现它可以传BIgDecimal::sum这种。其实在reduce方法处按下Ctrl+Q是可以查看jdk的接口文档的,里面有详细的使用案例)
在这里插入图片描述

匿名内部类和Lambda表达式的转化

在这里插入图片描述在这里插入图片描述利用IDE实现转换:
鼠标停在->附近按下alt+enter可以看到idea的提示,可以快捷地实现lambda表达式到匿名内部类写法的互转
在这里插入图片描述
在这里插入图片描述

Function接口的入参和返回值

在这里插入图片描述

demo


// Lambda表达式写法1
Stream<String> stringStream = list.stream().map(CallaboratorParamsInfo::getMerchantCode);

// Lambda表达式写法2
Stream<String> stringStream = list.stream().map(callaboratorParamsInfo -> callaboratorParamsInfo.getMerchantCode());

// 匿名内部类写法
Stream<String> stringStream = list.stream().map(new Function<CallaboratorParamsInfo, String>() {
		@Override
		public String apply(CallaboratorParamsInfo callaboratorParamsInfo) {
			return callaboratorParamsInfo.getMerchantCode();
		}
	});


其他有意义的问题

  • default方法
  • 如何自定义一个函数式接口
  • stream的并行流使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AORT:一款功能强大的多合一网络侦查与数据收集工具

关于AORT AORT是一款功能强大的多合一网络侦查与数据收集工具&#xff0c;该工具的主要目的是帮助漏洞Hunter和渗透测试人员完成网络侦查环节的各类任务。AORT基于Python开发&#xff0c;使用起来非常简单且方便&#xff0c;并且支持跨平台&#xff08;只要安装了Python 3即可…

怒删虚拟机,FPGA开发新宠-几步在Windows上安装桌面化Linux

Linux上运行Vivado这类EDA工具要比Window上快很多&#xff0c;大概就是优化的问题&#xff0c;所以选择Linux上开发是一个比较好的选择&#xff08;主要是免费&#xff09;。国内习惯了Win系统&#xff0c;所以用Linux比较少&#xff0c;那么有没有既可以在Windows上做一些文档…

Python爬虫(4)-Selenium模拟鼠标操作

在Selenium4.2以后的版本里面鼠标的操作方法都封装在了ActionChains中需要时直接取即可。 1.鼠标双击 使用方法就是调用ActionChains然后传入你需要点击的按钮的位置即可 ActionChains(driver).double_click(f1).perform() perform()的意思就是执行所有ActionChains中的动作 …

python字典应用

python字典应用 文章目录python字典应用一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤字典的综合案例使用collections模块的defaultdict类来实现创建字典。拓展知识一&#xff1a;内置函数globals()和locals()拓展知识二&#xff1a;有序字典 collections.Ord…

如何使用MyBatis简化JDBC开发?MyBatis持久层框架快速入门

文章目录1. 前言2. JDBC 存在的缺点3. MyBatis 优化4. MyBatis 快速入门5. 总结Java编程基础教程系列1. 前言 JavaEE 企业级 Java 项目中的经典三层架构为表现层&#xff0c;业务层和持久层&#xff0c;使用Java 代码操作数据库属于持久层内容&#xff0c;而 MyBatis 对 JDBC …

Multus k8s网络浅谈

Multus是什么 k8s不提供网络解决方案&#xff0c;提供CNI ( Container Networking Interface )规范&#xff0c;被CNI插件遵守&#xff08;Flannel, Calico&#xff0c;Multus等&#xff0c;这些是网络方案&#xff09; Multus 提供了将多个接口添加到pod的功能 Flannel 为每…

实现自己的数据库三

一 前言上篇实现了数据库的持久化&#xff0c;就是一个质的飞跃&#xff0c;虽然代码不复杂&#xff0c;但是对没有这方面经验者来说&#xff0c;还是意思的&#xff0c;下一步就是要完成另外一个飞跃&#xff0c;将存储的数据结构采用B树的形式来保存。在改造之前&#xff0c;…

为什么要设计非公平锁?

背景 公平&#xff1a;排队 非公平&#xff1a;在合适时机插队 非公平还是 ReentrantLock 的默认策略&#xff0c;排队时间不浪费了&#xff1f; 场景 来看这种场景 假如A持有一把锁&#xff0c;B请求这把锁&#xff0c;这时候B被挂起进入阻塞&#xff0c;A释放锁的时候&a…

点与线段的关系

点与线段的关系 对于向量a(x1,y1)和b(x2,y2) 点乘的数学意义&#xff1a;a * b x1x2 y1y2 点乘的几何意义&#xff1a;a * b |a||b|cosQ 这个可以看成是投影关系表达式&#xff1a;cosQ a * b / ( |a||b|) 令r cosQ&#xff1b; 求p点和线段AB的位置关系&#xff0c;可以…

将字符串根据指定的分隔符拆分为元组str.partition()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将字符串根据指定的分隔符拆分为元组 str.partition() 选择题 对于以下python代码最后输出的结果是? string "I Love Python" print("【显示】string.partition(Love)"…

Unity3d 微信小程序(小游戏)项目实现流量主接入功能(含源码)

前言 很早之前编写了Unity导出微信小游戏的博客&#xff0c;也尝试自己做了个Demo上线了&#xff0c;基本没更新过&#xff0c;不过几个月的时间&#xff0c;用户超过了一千&#xff0c;可以开通流量主了&#xff0c;大概率是因为上篇的帖子浏览量大了&#xff0c;扫码体验的人…

Aurora、Chip2chip、Ethernet(二)

摘要&#xff1a;Aurora、Chip2chip、Ethernet共用一个gt时钟的正确的解决方案以及在实际实现以及在实现过程中遇到的其它的问题。 我在实际中遇到的困难如下&#xff1a; 现在需要将三个ip共用一对GT时钟&#xff0c;一个Ethernet IP&#xff0c;一个Ethernet IP&#xff08…

每日学术速递1.29

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1. Compact Transformer Tracker with Correlative Masked Modeling 标题&#xff1a;带有相关掩码建模的紧凑型变压器跟踪器 作者&#xff1a; Zikai Song, Run Luo, Junqing Yu, Y…

GLM国产大模型训练加速:性能最高提升3倍,显存节省1/3,低成本上手

作者&#xff5c;BBuf、谢子鹏、冯文 2017 年&#xff0c;Google 提出了 Transformer 架构&#xff0c;随后 BERT 、GPT、T5等预训练模型不断涌现&#xff0c;并在各项任务中都不断刷新 SOTA 纪录。去年&#xff0c;清华提出了 GLM 模型&#xff08;https://github.com/THUDM…

一句话说明线程和进程

知识点&#xff1a; 1、一句话说明线程和进程 2、操作系统为什么需要进程 3、为什么要引入线程 4、一图说明线程和进程的关系 一、一句话说明线程和进程 进程&#xff1a;是指⼀个内存中运⾏的应⽤程序&#xff0c;比如QQ、微信、浏览器等&#xff1b;⼀个应⽤程序可以同时运⾏…

CAS 和 Synchronized优化过程以及常见的锁策略

目录 &#x1f411;今日良言:追星赶月莫停留,平芜尽处是春山 &#x1f402;一、锁策略 &#x1f43c;二、CAS &#x1f42d;三、Synchronized &#x1f411;今日良言:追星赶月莫停留,平芜尽处是春山 &#x1f402;一、锁策略 锁策略是实现锁的时候,考虑出现锁竞争了该怎么…

电驱系统电磁兼容基础知识及测试方法

电驱系统电磁兼容基础知识及测试方法 学习参考&#xff1a;驱动视界公众号、百度百科、《电动汽车电机驱动系统EMC研究综述》 1.背景 2.电磁干扰三要素 3.电波暗室与屏蔽室的原理 4.测试方法 5.如何看测试数据 6.工作中需要注意的EMC的几点问题 7.案例 1.背景 汽车工业发展…

docker安装db2

第一步&#xff1a;下载镜像 docker pull ibmcom/db2express-c:latest备注&#xff1a;docker images -a 可以查看已安装镜像&#xff1b; 第二步&#xff1a;启动镜像 docker run -d --name db2 -p 50000:50000 -e DB2INST1_PASSWORD[数据库密码] -e LICENSEaccept ibmcom…

玩转PPT 第1节 PPT制作理念学习笔记

ppt神器islide 第1节 初步接触强大的工具1 PPT大神的课程总结1.1 骨架篇1.2 色彩篇1.3 对齐篇1.4 对比篇1.5 修饰篇1.6 字体篇1.7 素材篇1.8 线条篇1.8.1 可以随意画线条&#xff0c;填充空白1.8.2 在字体上画线条&#xff0c;做成艺术字1.8.3 做对称线条&#xff0c;比如递进三…

Bluesky勒索软件深度技术分析

0 1、 背景介绍 勒索软件作为一种流行的木马&#xff0c;近年来已成为最为常见的安全威胁之一。与其他威胁不同&#xff0c;勒索软件先向受害者表明自己的身份&#xff0c;再通过加密的方式使用户数据资产或计算资源无法正常使用&#xff0c;而恢复数据资产的唯一方法通常是支…