重学java 76.JDK新特性 ② 函数式接口

news2024/11/18 21:28:13

Looking to the future is the order of the day, no worrying about old news

                                                                                                        —— 24.6.19

一、函数式接口

1.定义

        有且只有一个抽象方法的接口

2.检测

        @FunctionalInterface

3.示例

@FunctionalInterface
public interface USB {
    void open(String s);
}
public class Demo307Test01 {
    public static void main(String[] args) {
        method(new USB() {
            @Override
            public void open(String s) {
                System.out.println("开启了");
            }
        });
        System.out.println("——————————————————Lambda表达式———————————————————");
        method((String s) -> {
                System.out.println("Lamba表达式:开启了");
        });

        System.out.println("——————————————————Lambda表达式省略版———————————————————");
        method(s -> System.out.println("简化版:开启了"));
    }

    public static void method(USB usb){
        usb.open("鼠标");
    }
}

二、JDK自带的函数式接口

1.Supplier接口

1.supplier接口

        java.util.function.supplier<T>接口,它意味着"供给" -> 我们想要什么就给什么

2.方法:

        T get() -> 我们想要什么,get方法就可以返回什么

3.需求:

        使用supplier接口作为方法的参数

        用Lambda表达式求出int数组中的最大值

import java.util.Arrays;
import java.util.function.Supplier;

public class Demo308Supplier {
    public static void main(String[] args) {
        method(new Supplier<Integer>() {
            @Override
            public Integer get() {
                int[] arr = {4,3,4,6,7};
                Arrays.sort(arr);
                return arr[arr.length-1];
            }
        });

        method(() -> {
                int[] arr = {4,3,4,6,7};
                Arrays.sort(arr);
                return arr[arr.length-1];
        });
    }

    public static void method(Supplier<Integer> supplier){
        Integer value = supplier.get(); // 让get方法返回一个数组最大值
        System.out.println("value =" + value);
    }
}

4.泛型:

        <引用数据类型> -> 规定了我们操作的数据是什么类型

        <>中只能写引用数据类型,不能写基本数据类型

2.Consumer接口

        java.util.function.consumer<T> —> 消费型接口 —> 操作

方法:

        void accept(T t),意为消费一个指定泛型的数据

"消费"就是"操作”,至于怎么操作,就看重写accept方法之后,方法体怎么写了

示例:

import java.util.function.Consumer;

public class Demo309Consumer {
    public static void main(String[] args) {
        method(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s.length());
            }
        },"一切都会好的");

        System.out.println("——————————————————————————Lambda方法—————————————————————————");
        method(s -> System.out.println(s.length()),"一切都会好的");
    }
    public static void method(Consumer<String> consumer,String s){
        consumer.accept(s);
    }
}

3.Function

java.util.function.Function<T,R>接口用来根据一个类型的数据得到另一个类型的数据

方法:

        R apply(T t) 根据类型T参数获取类型R的结果

import java.util.function.Function;

public class Demo310Function {
    public static void main(String[] args) {
        method(new Function<Integer, String>() {
            @Override
            public String apply(Integer integer) {
                return integer+"";
            }
        },100);
    }

    public static void method(Function<Integer,String> function,Integer number){
        String s = function.apply(number);
        System.out.println("s = "+ (s+1));
    }
}

Lambda:

import java.util.function.Function;

public class Demo310Function {
    public static void main(String[] args) {
        method((Integer integer) -> integer+"",100);
    }

    public static void method(Function<Integer,String> function,Integer number){
        String s = function.apply(number);
        System.out.println("s = "+ (s+1));
    }
}

4.Predicate

java.util.function.Predicate<T>接口 —> 判断型接口

        boolean test(T t) —> 用于判断的方法,返回值为boolean型

import java.util.function.Predicate;

public class Demo311Predicate {
    public static void main(String[] args) {
        method((String s) -> s.length() == 7,"一切都会好的");
    }
    public static void method(Predicate<String> predicate, String str) {
        boolean test = predicate.test(str);
        System.out.println("test = " + test);
    }
}

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

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

相关文章

【碳排放控排1006】碳排放控排企业名单数据集,探索绿色生产!

今天给大家分享的是国内顶级期刊2023发表论文《碳排放规制、企业减排激励与全要素生产率——基于中国碳排放权交易机制的准自然实验》中使用到的重要数据集——碳排放控排企业名单&#xff0c;该论文从企业生产效率视角对论文进行研究&#xff0c;发现碳排放权交易机制显著提升…

红米手机RedNot11无法使用谷歌框架,打开游戏闪退的问题,红米手机如何开启谷歌框架

红米手机RedNot11无法使用谷歌框架&#xff0c;打开游戏闪退的问题&#xff0c; 1.问题描述2.问题原因3.解决方案3.1配置谷歌框架&#xff1a;3.1软件优化 4.附图 1.问题描述 红米手机打开安卓APP没有广告&#xff0c;直接闪退&#xff0c;无法使用谷歌框架 异常关键词中包含&…

人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总)

开源大语言模型完整列表 Large Language Model (LLM) 即大规模语言模型&#xff0c;是一种基于深度学习的自然语言处理模型&#xff0c;它能够学习到自然语言的语法和语义&#xff0c;从而可以生成人类可读的文本。 所谓"语言模型"&#xff0c;就是只用来处理语言文…

数字时代的创新:二人共益订单模式解析

一、引言 随着数字技术的飞速发展&#xff0c;商业模式也日新月异。其中&#xff0c;“二人共益订单模式”凭借其独特的互助与共赢理念&#xff0c;迅速在市场中获得关注。该模式不仅为用户提供了优质服务和独享优惠&#xff0c;更通过用户间的互助和订单共享&#xff0c;实现…

js语音识别,语音转文字,speech recognition(需要翻墙才能识别)

先上代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width,initial-scale1.0"><title>test</title> </head><body><div id"…

技术与创意并驾齐驱:打造扭蛋机小程序的独特魅力

引言 扭蛋机小程序以其独特的玩法和吸引力&#xff0c;在移动互联网市场中崭露头角。本文将深入探讨如何通过技术与创意的并驾齐驱&#xff0c;打造扭蛋机小程序的独特魅力。 一、技术驱动&#xff1a;打造稳定高效的小程序平台 在扭蛋机小程序的开发过程中&#xff0c;技术是…

中国500米分辨率年平均LAI数据集(2000-2020)

叶面积指数LAI(Leaf Area Index)是描述植被冠层几何结构的基本参数之一&#xff0c;被定义为单位地表面积上所有叶片面积的倍数&#xff0c;它控制着植被的许多生物物理过程&#xff0c;如光合作用、呼吸作用、蒸腾作用、碳循环和降水截获等&#xff0c;是陆面过程一个十分重要…

推荐一个很好用的Latex写代码的软件

软件名称&#xff1a;Axmath 据说是国产软件&#xff0c;好用是真好用&#xff08;去哪找&#xff1f;比如某地球号的公主号或其他地方&#xff09;我是推荐付费购买使用 1.通过图形操作&#xff0c;选择要转成Latex代码的符号&#xff0c;按下转换&#xff0c;直接就出现了我…

植物大战僵尸杂交版V2.1快速刷金币的方法(新号适用,无需自带招财猫)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 1. &#x1f4bb;游戏介绍 2. &#x1f525;快速刷取金币的办法&#xff08;我是新号测试的&#xff09; 2.1 无招财猫 2.2 有招财猫 《植物大战僵尸杂交版》是一款在原版《植物大战僵尸》基础上进行了创新的塔防…

『大模型笔记』如何让小型语言模型发挥作用!

如何让小型语言模型发挥作用! 文章目录 一. 如何让小型语言模型发挥作用!不可能的可能性小模型的潜力创新方法与突破实践与验证过滤系统与数据质量小模型的逐步改进信息理论蒸馏方法(新工作InfoSum)总结与展望Infini-Gram与N-gram模型的新时代后缀数组与高速计算二. 参考文献…

怪物猎人物语什么时候上线?游戏售价多少?

怪物猎人物语是一款全新的RPG游戏&#xff0c;玩家在游戏中将化身为骑士&#xff0c;不断与怪物建立羁绊、不断成长&#xff0c;踏上前往外面世界的旅程&#xff0c;且最终目的地是以狩猎怪物为生的猎人世界。因为最近有不少玩家在关注这款游戏&#xff0c;所以下面就给大家分享…

Linux 式套娃,把“文件系统”安装在一个“文件”上?

背景 “文件”在文件系统之中&#xff0c;这是人人理解的概念。但“文件”之上还有一个文件系统&#xff1f;那岂不是成套娃了。但这个其实是可以的。这个就涉及到今天我们要讲的 loop 设备。 很多童鞋在学习 Linux 的文件系统时&#xff0c;涉及到对磁盘设备的格式化&#x…

2024年AIGC行业研究:多模态大模型与商业应用

2024年2月&#xff0c;OpenAI发布其首款视频生成模型Sora&#xff0c;用户仅需输入一段文字即可生成长达一分钟场景切换流畅、细节呈现清晰、情感表达准确的高清视频&#xff0c;与一年前的AI生成视频相比&#xff0c;在各维度均实现了质的提升。这一突破再次将AIGC推向大众视野…

JavaScript运行原理和执行过程

参考&#xff1a; https://www.cnblogs.com/hexrui/p/15939592.html 1、执行上下文栈&#xff08;调用栈&#xff09; GECGlobal Execution Context&#xff08;GEC&#xff09;被放入到ECS&#xff08;Execution Context Stack&#xff0c;简称ECS&#xff09;中 GEC开始执…

RLC防孤岛负载测试:市场前景展望

随着可再生能源的广泛应用&#xff0c;如太阳能和风能等&#xff0c;电力系统的结构正在发生深刻的变化。这种变化带来了许多新的挑战&#xff0c;其中之一就是如何有效地防止电力系统出现孤岛现象。为了解决这个问题&#xff0c;RLC防孤岛负载测试技术应运而生。 RLC防孤岛负载…

Git Extensions gui工具差异显示乱码

某些IDE例如KEIL等默认编码格式为GB2312&#xff0c;而git extensions默认utf-8&#xff0c;如果不想修改文件格式为utf-8的话就修改git extensions格式为GB2312。 默认是没有chines 这个选项的&#xff0c;我这里是已经添加好的。方法为上方工具栏->设置->Git->设置…

css 文字两端对齐

<body><div class"box"><p>姓名</p><p>性与别</p><p>家庭住址</p><p>how are you</p><p>hello</p><p>1234</p><p>1 2 3 4</p></div> </body> text-a…

走嵌入式方向有必要参加数模的比赛,涨一下见识吗?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;参加数模&#xff08;数学…

JAVA二手车交易二手车市场系统源码支持微信小程序+微信公众号+H5+APP

&#x1f697;二手车交易系统小程序&#xff1a;让买卖更轻松&#x1f50d; 功能介绍 我的粉丝、我的关注、获赞、访客 我的动态、认证中心、我的团队、开通会员 免费估值、买二手车、我要卖车、车型选择 每日上新、底价专区、精准筛选、附近展厅商 车辆的详细信息、拨打电…

前端高级架构师课程(总共111门课程,1150GB)

由阿里P8前端架构师亲自精心筛选整理的全网最新最具价值的前端进阶学习课程&#xff01; 培训机构原版教程&#xff01; 课程知识点和一线大厂完美匹配&#xff01; 所有课程资源完整成套&#xff0c;不残缺&#xff0c;不拼凑&#xff0c;不拆开乱发&#xff01; 这系列课程包…