方法引用详解
什么是方法引用?:针对于函数式接口中的抽象方法
为什么用方法引用?:避免代码的重复,简便书写,提高效率
在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿参数做操作
那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑呢?答案肯定是没有必要
方法引用格式符号: ::
方法引用的条件?:必须遵循
方法引用的分类:
1.引用静态方法
1.1 格式
1.2 示例
为什么调用parseInt?符合方法调用要求,与函数式接口中的抽象方法形式相同,如下面的对比图
2.引用成员方法
2.1格式:其他类要创建成员对象
因为静态方法中,没有this,非要引用本类的静态成员方法的话:new 本类 ::方法名
3.引用构造方法
3.1 格式
3.2 示例
不使用方法引用:
使用方法引用:
添加符合方法引用的构造方法:
why:无需考虑对象的创建? answer:构造方法实现后自动会创建对象
4.特殊:使用类名调用成员方法
4.1 格式
特殊点:采用"使用类名调用成员方法"的引用方法时,stream流中的数据类型决定了我可以使用哪个类,不可以任意选择类,只能选择和stream流中的数据类型相同的
4.2 示例
不使用方法引用:Map是要改的主体
使用方法引用:
疑惑点:并不符合引用方法条件为啥也能用?
采用"使用类名调用成员方法"的引用方法时,参考这条:
map中第一个参数是string,而没有第二个参数,所以是无参的,而toUpperCase是无参的,
并且只能使用string类中的成员方法!!!
可以理解为:所以必须使用和stream中数据相同的类型的类
5.特殊:引用数组的构造方法
5.1 格式:就是生成一个:该数据类型的数组
5.2 示例:
不使用方法引用:
使用方法引用:直接integer::new
6.三道练习题
public class Test1 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();Collections.addAll(list,"张三,23","李四,24","王五,25","大的的,27");list.stream().map(new Function<String, Student>() {@Overridepublic Student apply(String s) {return new Student(s.split(",")[0],Integer.parseInt(s.split(",")[1]));}});//将map的抽象方法使用:方法引用list.stream().map(Student::new).toArray(new IntFunction<Student[]>() {@Overridepublic Student[] apply(int value) {return new Student[value];}});//将toArray的抽象方法使用:方法引用Student[] arr = list.stream().map(Student::new).toArray(Student[]::new);System.out.println(Arrays.toString(arr));}
}
在student中:新写了一个构造方法,方便Map引用
重写tostring方法:
相关文章:

方法引用详解
什么是方法引用?:针对于函数式接口中的抽象方法 为什么用方法引用?:避免代码的重复,简便书写,提高效率 在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿参数…...

Apache Seata 高可用部署实践
本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Apache Seata 高可用部署实践 Seata 高可用部署实践 使用配置中心和数据库来实现 Seata 的高…...

nginx配置尝试
from fastapi import FastAPI, File, UploadFile, HTTPException from fastapi.responses import JSONResponse, FileResponse, HTMLResponse import logging import os from datetime import datetime import uvicorn# 初始化日志 logging.basicConfig(filenamefile_server.lo…...

SAR目标检测
Multi-Stage with Filter Augmentation 多阶段滤波器增强(MSFA) 对SAR合成孔径雷达目标检测性能的改善 MSFA ON SAR 传统方法: 预训练:传统方法开始于在通用数据集上预训练一个基础模型。 微调:这个预训练的模型会被微调以适应特定的SAR图像,试图缩小域间的差距 …...

创新配置,秒级采集,火爆短视频评论抓取
快速采集评论数据的好处 快速采集评论数据是在当今数字信息时代的市场趋势分析和用户反馈分析中至关重要的环节。通过准确获取并分析大量用户评论,您将能够更好地了解消费者的需求、情感和偏好。集蜂云采集平台提供了一种简单配置的方法,使您能够快速采…...

STL—容器—string类【对其结构和使用的了解】【对oj相关练习的训练】
STL—容器—string类 其实string类准确来说并不是容器,因为他出现的时间比STL要早,但是也可以说是容器吧。 1.为什么要学习string类? 1.1C语言当中的字符串 C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作…...

讲个SystemVerilog随机约束小坑
正文 记录个在写SystemVerilog随机约束时遇到的一个小坑,如果没有认真去查看随机结果是否符合预期,还真不容易发现。 为了方便讲述,写了如下示例代码。类cl_a里有个随机变量aa,初始值为222。在module top里对类cl_a例化并进行约…...

mysql在windows下的安装
软件安装 配置环境变量 测试...

uniapp 在手机上导出excel
1.创建excelDev.js文件 export default {exportExcel(fileData, documentName excel) {plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, function(fs) {let rootObj fs.rootlet fullPath rootObj.fullPathconsole.log("开始导出数据")// 创建文件夹rootObj…...
收银系统源码-收银台副屏广告
1. 功能描述 门店广告:双屏收银机,副屏广告,主屏和副屏同步,总部可统一控制广告位,也可以给门店开放权限,门店独立上传广告位; 2.适用场景 新店开业、门店周年庆、节假日门店活动宣传&#x…...

【TORCH】torch.normal()中的size参数
在 torch.normal() 函数中,size 参数用于指定生成张量的形状。torch.normal() 函数用于从正态(高斯)分布中生成随机数。函数的基本形式是: torch.normal(mean, std, size)mean:均值,可以是标量或张量。如果…...

【第20章】MyBatis-Plus逻辑删除支持
文章目录 前言一、逻辑删除的工作原理二、支持的数据类型三、使用方法1.配置全局逻辑删除属性2.在实体类中使用 TableLogic 注解 四、常见问题解答1. 如何处理插入操作?2. 删除接口自动填充功能失效怎么办? 五、实战1. 全局配置2. 添加TableLogic3. 自动…...

【IT领域新生必看】 Java编程中的重载(Overloading):初学者轻松掌握的全方位指南
文章目录 引言什么是方法重载(Overloading)?方法重载的基本示例 方法重载的规则1. 参数列表必须不同示例: 2. 返回类型可以相同也可以不同示例: 3. 访问修饰符可以相同也可以不同示例: 4. 可以抛出不同的异…...

python转文本为语音并播放
python转文本为语音并播放 1、导入库 pip install pyttsx3==2.902、流程 1、初始化tts引擎 2、设置音量(0到1之间) 3、设置语速 4、 设置声音对象,voices[0].id代表男生,voices[1].id代表女生 5、转换文本并播放 6、挂起声音引擎3、代码 # -*- coding: utf-8 -*-"…...

解锁高效软件测试:虚拟机助力提升测试流程的秘诀
众所周知,软件测试在软件开发生命周期中至关重要。它确保软件符合要求,没有漏洞,并帮助开发人员优化性能,验证项目功能。 然而,测试可能既耗时又耗费资源,特别是当需要在不同操作系统和配置上测试软件组件…...

创建vue3项目
npm create vuelatest 编译打包生成报告 yarn add rollup-plugin-visualizer vite.config.ts: import { fileURLToPath, URL } from node:urlimport { defineConfig } from vite import vue from vitejs/plugin-vue import vueJsx from vitejs/plugin-vue-jsx import vueDevTo…...

中国网络安全审查认证和市场监管大数据中心数据合规官CCRC-DCO
关于CCRC-DCO证书的颁发机构,它是由中国网络安全审查认证与市场监管大数据中心(简称CCRC)负责。 该中心在2006年得到中央机构编制委员会办公室的批准成立,隶属于国家市场监督管理总局,是其直辖的事业单位。 依据《网络…...

Web漏洞扫描工具AppScan与AWVS测评及使用体验
AppScan和AWVS业界知名的Web漏洞扫描工具,你是否也好奇到底哪一个能力更胜一筹呢?接下来跟随博主一探究竟吧。 1. 方案概览 第一步:安装一个用于评测的Web漏洞靶场(本文采用最知名和最广泛使用的靶场,即OWASP Benchma…...

瞰景Smart3D使用体验分享
引言 作为一名建筑设计师,我一直在寻找能够提升工作效率和设计质量的软件工具。瞰景Smart3D(Smart3D)是一款备受推崇的3D建模和设计软件,广泛应用于建筑、工程和施工(AEC)行业。经过一段时间的使用&#x…...

Android系统adb shell dumpsys activity processes
在Android系统中,adb shell dumpsys activity processes 命令是一个非常强大的工具,用于获取当前系统中所有运行进程的详细信息,包括它们的状态、内存使用情况、任务栈等。这对于开发者来说非常有用,尤其是在调试应用、分析系统性…...

vue侦听器watch()
侦听器watch() 侦听器侦听数据变化,我们可以使用watch 选项在每次响应式属性变化时触发一个函数。 <template><h3>侦听器watch</h3><hr> <p>{{nessage}}</p> <button click"exchage">…...

如何用Python向PPT中批量插入图片
办公自动化办公中,Python最大的优势是可以批量操作,省去了用户粘贴、复制、插入等繁琐的操作。经常做PPT的朋友都知道,把图片插入到PPT当中的固定位置是一个非常繁琐的操作,往往调整图片时耗费大量的时间和精力。如何能省时省力插…...

C# Socket
Socket命名空间:创建 Socket:连接到服务器(客户端):绑定和监听(服务器端):接受连接(服务器端):发送和接收数据:关闭 Socket࿱…...

node的下载、安装、配置和使用(node.js下载安装和配置、npm命令汇总、cnpm的使用)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 愿将腰下剑,直为斩楼兰。 ——《塞下曲》 文章目录 一、node.js的下载、安装和配置1. node.js下…...

深度卷积神经网络 AlexNet
一、机器学习深度学习的发展 1、机器学习SVM方法 (1)20世纪90年代,基于统计学习理论的结果,开发了一种新型的学习算法——支持向量机(SVM)。这就产生了一类新的理论上优雅的学习机器,它们将SVM…...

【刷题汇总--大数加法、 链表相加(二)、大数乘法】
C日常刷题积累 今日刷题汇总 - day0061、大数加法1.1、题目1.2、思路1.3、程序实现 2、 链表相加(二)2.1、题目2.2、思路2.3、程序实现 3、大数乘法3.1、题目3.2、思路3.3、程序实现 4、题目链接 今日刷题汇总 - day006 1、大数加法 1.1、题目 1.2、思路 读完题,明白大数相加…...

基于Java的网上花店系统
目 录 1 网上花店商品销售网站概述 1.1 课题简介 1.2 设计目的 1.3 系统开发所采用的技术 1.4 系统功能模块 2 数据库设计 2.1 建立的数据库名称 2.2 所使用的表 3 网上花店商品销售网站设计与实现 1. 用户注册模块 2. 用户登录模块 3. 鲜花列表模块 4. 用户购物车…...

uniApp 封装VUEX
Vuex Store (index.js) import Vue from vue; import Vuex from vuex; import Cookies from js-cookie;Vue.use(Vuex);const saveStateKeys [vuex_user, vuex_token, vuex_demo];const initialState {vuex_user: { name: 用户信息 },vuex_token: Cookies.get(token) || ,vue…...

最长公共子序列求长度和输出子序列C代码
求两个字符串的公共子序列我们都知道需要使用用动态规划思想 用res[i][j]表示截止到字符串A的第i个字符串和截止到字符串B的第j个字符的最长公共子序列。如两个字符串helloworld和loop,res[5][3]表示子串hello和子串loo的最长公共子序列,为lo࿰…...

安卓Framework开发快速分析日志及定位源码
文章目录 如何区分源码中 main system events 日志查看 Activity 生命周期日志分析 events 日志在源码中位置应用进程ID助分析具体应用ProtoLog 动态开关日志如何快速定位相关流程的代码位置 本文首发地址 https://h89.cn/archives/285.html 最新更新地址 https://gitee.com/ch…...