Java—方法引用

news/2025/2/9 5:33:40 标签: 排序算法, 算法

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

条件:

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

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

3.被引用方法的形参和返回值需要跟抽象方法保持一致

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

::是什么符号?

方法引用符

代码案例:

对一个数组从大到小排序

public class text5 {
    public static void main(String[] args) {
        Integer[]arr ={3,5,4,1,6,2};
        Arrays.sort(arr, new Comparator<Integer>() {
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        System.out.println(Arrays.toString(arr));
 Arrays.sort(arr, FunctionDemo1::sub);
        System.out.println(Arrays.toString(arr));

//是FunctionDemo1类中的方法 static静态引用方法类名::方法名
public static int sub(int num1,int num2){
    return num1-num2;
}

方法引用的分类:

引用静态方法:

之前:类名.静态方法

格式:类名::静态方法

范例:Integer:: rsent

练习:

集合中有以下数字,要求把他们都变成int类型

"1","2","3","4","5"

被引用方法的形参和返回值需要跟抽象方法保持一致:

引用成员方法:

之前:对象.成员方法

格式:对象::成员方法

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

本类:this::方法名 注意:引用处不能是静态方法静态方法中没有this和super关键字的

父类:super::方法名

其他类的引用成员方法

练习:

集合中有一些名字,按照要求过滤数据

数据:“张无忌","周芷若","赵敏","张强","张三丰"

要求:只要以张开头,而且名字是3个字的

由于Java没有写好的过滤方法:需要我们自己写一个:

注意:被引用方法的形参和返回值需要跟抽象方法保持一致:

引用构造方法:

格式:类名::new

范例:Student::new

练习

集合里面存储姓名和年龄,比如:张无忌,15

要求:将数据封装成Student对象并收集到List集合中

因为被引用方法的形参和返回值需要跟抽象方法保持一致,而student类中没有一致的,所以需要在student类中在加一个构造方法用来跟抽象方法保持一致。

使用类名引用成员方法:

格式:类名::成员方法

范例:String::substring

练习:

集合里面一些字符串,要求变成大写后进行输出

原因:

局限性:

不能引用所有类中的成员方法。

是跟抽象方法的第一个参数有关,这个参数是什么类型的,那么就只能引用这个类中的方法。

引用数组构造方法:

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

范例:int[]::new

练习:

集合中存储一些整数,收集到数组当中

public class text10 {
    public static void main(String[] args) {
        ArrayList<Integer>list=new ArrayList<>();
        Collections.addAll(list,1,2,3,4,5,6,7,8,9,10);
        Integer[] arr = list.stream().toArray(Integer[]::new);
        System.out.println(Arrays.toString(arr));
    }
}

小结:


http://www.niftyadmin.cn/n/5845575.html

相关文章

w~Transformer~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/12406495 #transformer~x1 太可怕了都到6了 太强~~ DeepMind 表示&#xff0c;他们提出的算法蒸馏&#xff08;AD&#xff09;是首个通过对具有模仿损失的离线数据进行顺序建模以展示上下文强化学习的方法。同时基于观察…

OpenCV:视频背景减除

目录 简述 1. MOG &#x1f537;1.1 主要特点 &#x1f537;1.2 代码示例 &#x1f537;1.3 运行效果 2. MOG2 &#x1f537;2.1 主要特点 &#x1f537;2.2 代码示例 &#x1f537;2.3 运行效果 3. KNN 4. GMG 5. CNT 6. LSBP 7. 如何选择适合的接口&#xff…

解决Element UI中el-select下拉框因为选项内容过长导致下拉框宽度显示过长问题

在使用el-select下拉框时&#xff0c;当选项的内容过长就会自动撑开下拉框容器&#xff0c;导致下拉框的宽度显示异常&#xff0c;影响页面美观 我们更倾向于下拉框的宽度和el-select组件宽度保持一致 解决方法 1、使用el-select组件的popper-append-to-body属性(推荐) 设置…

RK3568使用C++和FFmpeg进行视频流,并使用自带GPU加速

在RK3568平台上使用C和FFmpeg进行视频流处理时&#xff0c;可以利用GPU加速解码。RK3568芯片集成了Mali-G52 GPU&#xff0c;支持硬件加速的视频解码。以下是一个基本的示例&#xff0c;展示如何使用FFmpeg和RK3568的GPU加速来拉取视频流。 1. 安装FFmpeg和RKMPP 首先&#x…

使用 CloudDM 和钉钉流程化管理数据库变更审批

CloudDM 是一个专为团队协同工作打造的数据库数据管控平台。在管控数据库安全变更的过程中&#xff0c;为提高效率&#xff0c;CloudDM 接入了钉钉&#xff0c;支持实时通知与移动办公&#xff0c;满足广大企业用户的实际需求。 本文将介绍如何使用 CloudDM 和钉钉实现高效的数…

k8s中部署nginx的pod

在当今数字化的浪潮中&#xff0c;容器编排技术成为了构建和管理应用程序的核心力量。Kubernetes&#xff08;简称 k8s&#xff09;作为容器编排领域的佼佼者&#xff0c;凭借其强大的自动化部署、扩展和管理能力&#xff0c;深受开发者和运维人员的青睐。而 Nginx 作为一款高性…

政采云业务网关实践:使用 Higress 统一替代 APISIX/Kong/Istio Ingress

作者&#xff1a;政采云基础架构团队技术专家 朱海峰&#xff08;片风&#xff09; 业务网关项目背景 由于一些历史的背景&#xff0c;政采云平台在网关建设上遇到一些问题&#xff1a; 容器网关配置较多&#xff0c;配置方式多样&#xff0c;运维压力较大&#xff1a; 配置…

FlutterWeb实战:02-加载体验优化

背景 默认情况下,Flutter 打包 web 以后,首次打开页面需要加载大量的资源,这就需要做首屏加载优化。 渲染引擎 通过分析,canvaskit 和 skwasm 需要加载较大的引擎包,很难优化,目前选择 3.22 版本,故选择 HTML Render 引擎 Flutter Web 计划在 2025 开始弃用 HTML Ren…