方法引用的学习

把已经有的方法拿过来用,当作函数时接口中抽象方法的方法体

1.引用出必须是函数式接口

2.被引用的方法必须已经存在

3.被引用方法的形参和返回值必须与抽象方法保持一致

4.被引用的方法功能要满足当前需求

        /** 创建一个数组,按照倒叙排序* *///创建数组Integer[] arr = {2, 1, 5, 7, 3, 4};//匿名内部类
/*Arrays.sort(arr, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2 - o1;}});*/System.out.println(Arrays.toString(arr));//Lambda表达式
/*        Arrays.sort(arr,(Integer o1, Integer o2)->{return o2-o1;});*///        Arrays.sort(arr, (o1, o2) -> o2 - o1);//        System.out.println(Arrays.toString(arr));//方法引用/** 表示引用FunctionDemo里的Demo1里的subraction方法* 把这个方法当作抽象方法的方法体* */Arrays.sort(arr,Demo1::subraction);System.out.println(Arrays.toString(arr));}public static int subraction(int num1, int num2) {return num2 - num1;}

::是什么符号?

是方法引用符

方法引用的分类

引用静态方法

格式:类名::静态方法

范例:Integer::parseInt

ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "1", "2", "3", "4", "5");list.stream().map(new Function<String, Integer>() {@Overridepublic Integer apply(String s) {int i=Integer.parseInt(s);return i;}
}).forEach(s-> System.out.println(s));list.stream().map(Integer::parseInt).forEach(s-> System.out.println(s));

引用成员方法

格式:对象::成员方法

其他类:        其他类对象::方法名

本类:        this::方法名

父类:        super::方法名

不能写在静态里,静态没用this和super

引用构造方法

格式: 类名::new

范例: Student::new

使用类名引用成员方法

格式: 类名::成员方法

范例: String::substring

规则

1.需要有函数式接口

2.被引用的方法已经存在

3.被引用方法的形参,需要跟抽象方法的第二个形参到最后一个形参保持一致,返回值需要保持一致

4、被引用方法的功能需要满足当前的需求

详解:

第一个参数:表示被引用方法的调用者,决定了可以引用的那些类中的方法

                        在Stream流里,第一个参数一般都表示流里的每一个数据

                        假设流里的数据都是字符串,把么使用这种方法进行方法引用,只能引用String这个类中的方法

第二个参数到最后一个参数:跟被引用方法的形参保持一致,如果没有第二个参数,说明被引用的方法需要是无参的成员方法

        ArrayList<String>list=new ArrayList<>();Collections.addAll(list,"aaa","bbb","ccc");
/*        list.stream().map(new Function<String, String>() {@Overridepublic String apply(String s) {return s.toUpperCase();}}).forEach(s-> System.out.println(s));*/list.stream().map(String::toUpperCase).forEach(s-> System.out.println(s));

引用数组的构造方法

格式:        数据类型[] ::new

范例:        int [] ::new

数组的类型需要跟流中数据类型保持一致

        ArrayList<Integer> list = new ArrayList<>();Collections.addAll(list, 1, 2, 3, 4, 5);/*        Integer[] arr = list.stream().toArray(new IntFunction<Integer[]>() {@Overridepublic Integer[] apply(int value) {return new Integer[value];}});*/Integer[] arr2 = list.stream().toArray(Integer[]::new);System.out.println(Arrays.toString(arr2));

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

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

相关文章

1052 卖个萌

一.问题: 萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见&#xff0c;我们假设一个表情符号是按下列格式输出的&#xff1a; [左手]([左眼][口][右眼])[右手]现给出可选用的符号集合&#xff0c;请你按用户的要求输出表情。 输入格式&#xff1a; …

大数据之LibrA数据库系统告警处理(ALM-12005 OKerberos资源异常)

告警解释 告警模块对Manager中的Kerberos资源的状态进行监控&#xff0c;当Kerberos资源异常时&#xff0c;系统产生此告警。 当Kerberos资源恢复时&#xff0c;且告警处理完成时&#xff0c;告警恢复。 告警属性 告警参数 对系统的影响 Manager中的Kerberos资源异常&#…

ceph高可用、手动安装

操作系统&#xff1a;centos8 三台服务器&#xff1a; 192.168.6.22&#xff1a;mon,mgr,mds,osd 192.168.6.23&#xff1a;mon,mgr,mds,osd 192.168.6.24&#xff1a;mon,mgr,mds,osd 正式环境osd和mon不应该在一个节点&#xff0c;建议osd单独服务器安装。 ceph版本&am…

element表格自定义筛选

文章目录 前言一、简介二、效果展示三、源码总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; …待续 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、简介 修改el-table的筛选…待续 二、效果展示 三、源码 使用方法…

PHP判断闰年

闰年的规则 1.能被4整除且不能被100整除 &#xff08;普通闰年&#xff09; 2.能被400整除&#xff0c;公历年份是整百数的&#xff0c;必须是400的倍数才是闰年&#xff08;世纪闰年&#xff09; 代码 function isLeapYear($year) {if($year%40 && $year%100!0){r…

Go 中的 OOP- 用结构体代替类

Go是面向对象的吗&#xff1f; Go 不是一种纯粹的面向对象编程语言。这段摘录自 Go 的常见问题解答&#xff0c;回答了 Go 是否是面向对象的问题。 是也不是。虽然Go有类型和方法&#xff0c;并且允许面向对象的编程风格&#xff0c;但是没有类型层次结构。Go中的“接口”概念…

sentinel规则持久化-规则同步nacos-最标准配置

官方参考文档&#xff1a; 动态规则扩展 alibaba/Sentinel Wiki GitHub 需要修改的代码如下&#xff1a; 为了便于后续版本集成nacos&#xff0c;简单讲一下集成思路 1.更改pom 修改sentinel-datasource-nacos的范围 将 <dependency><groupId>com.alibaba.c…

[SUCTF 2019]EasySQL 1

题目环境&#xff1a; 把你的旗子给我&#xff0c;我会告诉你旗子是不是对的。 判断注入类型1回显结果 不是字符型SQL注入 1回显结果 数字型SQL注入 查所有数据库,采用堆叠注入1;show databases;查看所有数据表1;show tables;尝试爆Flag数据表的字段1;show columns from Flag; …

算法——程序的灵魂

文章目录 前言算法与程序的关系例子1&#xff1a;冒泡排序例子2&#xff1a;斐波那契数列算法优化与进阶总结 前言 大家好我是艾老虎尤&#xff0c;算法与程序是计算机科学中两个非常重要的概念。算法是解决问题的方法和步骤&#xff0c;而程序是算法的具体实现。在计算机科学…

LeetCode | 27. 移除元素

LeetCode | 27. 移除元素 OJ链接 这道题有一个方法是要删除的数据直接后一个数据挪动到前一个数据&#xff0c;这个方法好不好&#xff1f;最坏的情况下时间复杂度是O(N^2) 还有一个方法 定义一个src定义一个dst&#xff0c;原地直接进行赋值&#xff0c;不进行挪动&#xf…

Qt程序执行编译输出内容解释

以这个为例&#xff1a; D:\SoftwareInstall\Qt6\Tools\QtCreator\bin\jom\jom.exe -f Makefile.Debug cd AuthorizeTools\ && ( if not exist Makefile D:\SoftwareInstall\Qt6\5.15.2\msvc2019_64\bin\qmake.exe -o Makefile E:\Coding\project\DigitalCamera\digita…

yum安装node,npm

node官网 yum -y install nodejs npm 查看版本 npm -v node -v卸载 yum -y remove nodejs npm修改镜像源 4.1. 修改淘宝镜像源 set registry https://registry.npm.taobao.org npm config get registr4.2. 修改华为云镜像源 npm config set registry https://mirrors.huaweicl…

Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库

Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库 Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库安装 IndexDB类库引入 localForage测试 新增数据、获取数据 Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库 大部分场景使用 LocalStore都…

【Python】海龟图turtle.color() 方法有关RGB颜色设置详解

在Turtle模块中&#xff0c;turtle.color()函数用于设置画笔和填充颜色&#xff0c;你可以使用RGB颜色码作为参数。RGB颜色码由三个数字组成&#xff0c;分别代表红色&#xff08;R&#xff09;&#xff0c;绿色&#xff08;G&#xff09;和蓝色&#xff08;B&#xff09;的分量…

驱动开发platform

任务 : 基于platform驱动模型完成LED驱动的编写&#xff0c;实现三盏灯的点亮 驱动代码 #include <linux/init.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/mod_devicetable.h> #include <linux/of.h>…

Linux | 进程终止与进程等待

目录 前言 一、进程终止 1、进程终止的几种可能 2、exit 与 _exit 二、进程等待 1、为什么要进程等待 2、如何进行进程等待 &#xff08;1&#xff09;wait函数 &#xff08;2&#xff09;waitpid函数 3、再次深刻理解进程等待 前言 我们前面介绍进程时说子进程退出…

pytorch复现4_Resnet

ResNet在《Deep Residual Learning for Image Recognition》论文中提出&#xff0c;是在CVPR 2016发表的一种影响深远的网络模型&#xff0c;由何凯明大神团队提出来&#xff0c;在ImageNet的分类比赛上将网络深度直接提高到了152层&#xff0c;前一年夺冠的VGG只有19层。Image…

uniapp 关于 video 组件的缩放比例问题

在 container 样式的 padding-bottom 设置比例值 9/16 比例值&#xff1a;56.25% 3/4 比例值&#xff1a;75% <view class"container"><video class"video-box" src"xxx.mp4" /> </view> .container {position: relative;wid…

Redis(01)| 数据结构

这里写自定义目录标题 Redis 速度快的原因除了它是内存数据库&#xff0c;使得所有的操作都在内存上进行之外&#xff0c;还有一个重要因素&#xff0c;它实现的数据结构&#xff0c;使得我们对数据进行增删查改操作时&#xff0c;Redis 能高效的处理。 因此&#xff0c;这次我…

作为20年老程序员,我如何使用GPT4来帮我写代码

如果你还在用google寻找解决代码bug的方案&#xff0c;那你真的out了&#xff0c;试试gpt4, save my life. 不是小编危言耸听&#xff0c;最近用gpt4来写代码极大地提高了代码生产力和运行效率&#xff0c;今天特地跟大家分享一下。 https://www.promptspower.comhttps://www.…