第14章总结:lambda表达式与处理

14.1: lambada表达式
14.1.1:lambada表达式简介

无参数

package fourteen;
    interface SayhHi{
        String say();//抽象方法接口
    }
 
 
public class NoParamDemo {
    public static void main(String[] args) {
        //无参数
        //利用匿名内部类补全方法体
         SayhHi sh1 = new SayhHi() {
             public String say() {
                 return "这是匿名内部类";
             }
         };
         System.out.print(sh1.say());
    }
 
}

使用表达式表达

         System.out.print(sh1.say());
         //利用lambda表达式补全方法体
         SayhHi sh2 =() -> {
             return "这是lambda表达式";
         };
         System.out.println(sh2.say());
         
    }
 
}
 

有参数

使用表达式

package fourteen;
interface AddInt{
     int add(int a,int b);//抽象方法接口
}
 
public class Prama {
 
    public static void main(String[] args) {

   //有参数
        //利用匿名内部类补全方法体
        AddInt ai1 = new AddInt() {
             public int add(int a,int b){
                 return a+b;
             }
         };
         System.out.println("匿名内部类:"  + ai1.add(3, 5));
         //利用lambda表达式补全方法体
         AddInt ai2=( a, b) -> {
             return a+b ;
         };
         System.out.println("lambda表达式:"+ai2.add(3, 5));
         
    }
 
}

例题

package fourteen;
interface CheckGrade {
    String check(int grade); // 查询成绩结果
}
 
public class GradeDemo {
    public static void main(String[] args) {
        CheckGrade g = (n) -> { // lambda实现代码块
            if (n >= 90 && n <= 100) { // 如果成绩在90-100
                return "成绩为优"; // 输出成绩为优
            } else if (n >= 80 && n < 90) { // 如果成绩在80-89
                return "成绩为良"; // 输出成绩为良
            } else if (n >= 60 && n < 80) { // 如果成绩在60-79
                return "成绩为中"; // 输出成绩为中
            } else if (n >= 0 && n < 60) { // 如果成绩小于60
                return "成绩为差"; // 输出成绩为差
            } else { // 其他数字不是有效成绩
                return "成绩无效"; // 输出成绩无效
            }
        }; // 不要丢掉lambda语句后的分号
        System.out.println(g.check(89)); // 输出查询结果
    }
}
//14.3


//使用方法的引用补全方法体

双冒号::

static int add(int x, int y) {//方法的引用,这是方法体的方法

return x+y;

}

static int add(int x, int y) {//方法的引用,这是方法体的方法

return x+y;

}

完整代码

package fourteen;
interface AddInt{
     int add(int a,int b);//抽象方法接口
}
 
public class Prama {
    static int add(int x, int y) {//方法的引用,这是方法体的方法
        //对象也可以找到这个方法体,非静态
        return x+y;
    }
    
 
    public static void main(String[] args) {
        //有参数
        //利用匿名内部类补全方法体
        AddInt ai1 = new AddInt() {
             public int add(int a,int b){
                 return a+b;
             }
         };
         System.out.println("匿名内部类:"  + ai1.add(3, 5));
         //利用lambda表达式补全方法体
         AddInt ai2=( a, b) -> {
             return a+b ;
         };
         System.out.println("lambda表达式:"+ai2.add(3, 5));
         //使用方法的引用补全方法体
         AddInt ai3 = Prama::add;//找到类,找到方法体
         System.out.println("方法体:"+ai3.add(3, 5));
         
    }
 
}

例14.8

package fourteen;
 
import java.text.SimpleDateFormat;
import java.util.Date;
interface InstanceMethodInterface {                    // 创建测试接口
    String method(Date date);                           // 带参数的抽象方法
}
public class InstanceMethodDemo {
    public String format(Date date) {                  // 格式化方法
        // 创建日期格式化对象,并指定日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(date);                       // 返回格式化结果
    }
 
    public static void main(String[] args) {
        // 创建类对象
        InstanceMethodDemo demo = new InstanceMethodDemo();
        // 引用类对象的方法
        InstanceMethodInterface im = demo::format;
        Date date = new Date();                       // 创建日期对象
        System.out.println("默认格式:" + date);     // 输出日期对象默认格式
        // 输出经过接口方法处理过的格式
        System.out.println("接口输出的格式:" + im.method(date));
    }
}//14.8

//调用构造器

package fourteen;
    interface ConIn{
        ConDemo action();//创建接口,正好是这个类的构造器类型,抽象方法
        
    }
public class ConDemo {
    //使用无参的构造方法补全方法体
    public ConDemo() {//构造方法要写小括号
        System.out.println("无参构造方法");//构造方法
    }
    public ConDemo(int a) {//构造方法要写小括号
        System.out.println("有参构造方法");//构造方法
    }
    public static void main(String args[]) {
        ConIn ci1 = ConDemo:: new;//new一个对象
        ci1.action();//调用action方法
        //使用有参数的方法来补全方法体
        //ConDemo action(int a);
        //ConIn ci1 = ConDemo:: new;//new一个对象
        //ci1.action(5);//调用action方法
    }
    
}

流:

static List<Employee> getEmpList() { // 提供数据初始化方法
        List<Employee> list = new ArrayList<Employee>();
        // 添加员工数据
        list.add(new Employee("老张", 40, 9000, "男", "运营部"));
        list.add(new Employee("小刘", 24, 5000, "女", "开发部"));
        list.add(new Employee("大刚", 32, 7500, "男", "销售部"));
        list.add(new Employee("翠花", 28, 5500, "女", "销售部"));
        list.add(new Employee("小马", 21, 3000, "男", "开发部"));
        list.add(new Employee("老王", 35, 6000, "女", "人事部"));
        list.add(new Employee("小王", 21, 3000, "女", "人事部"));
        return list;

 stream接口

package fourteen;
 
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
 
public class StreamDemo {
    
    public static void main(String[] args) {
    List<Employee> list=Employee.getEmpList();//从employee表拿到list表中的员工表
    Stream<Employee> stream = list.stream();//调用list方法将表转换成流
    //筛选年龄>30岁的员工
    stream=stream.filter(sx-> sx.getAge()>30);//写条件,sx属于临时变量
    //限制条数
    stream = stream.limit(2);
    List<Employee> result = stream.collect(Collectors.toList());//转成List链表
    for (Employee sx : result) {//for循环输出结果
        System.out.println(sx);
        
    }
    }
 
}

数据分组

package fourteen;
 
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
 
public class GroupDemo {
 
    public static void main(String[] args) {
        // 分组
        List<Employee> list=Employee.getEmpList();//从employee表拿到list表中的员工表
        Stream<Employee> stream = list.stream();//调用list方法将表转换成员工流
        Map<String,List<Employee>> map = //创建map集合存入,String代指dept,list链表指代map集合的value
        stream.collect(Collectors.groupingBy(Employee::getDept));//利用流调用collect方法,分组方法,传入方法
        Set<String> depts = map.keySet();//获取map集合中的部门表
        for(String dept:depts){//for循环一个部门,depts代指部门
            System.out.println(dept+"员工信息如下:");//输出信息
            List<Employee> temp = map.get(dept);//分组列表输出
            for(Employee g : temp){//temp是临时变量
                System.out.println(g);//
            }
            System.out.println();
        }
        
        
 
    }
 
}
 

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

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

相关文章

【AI视野·今日Robot 机器人论文速览 第五十二期】Wed, 11 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Wed, 11 Oct 2023 Totally 31 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers RoboHive: A Unified Framework for Robot Learning Authors Vikash Kumar, Rutav Shah, Gaoyue Zhou, Vincent Moens, Vittor…

SAP MM学习笔记35 - 请求书照合中的差额处理(发票扣减,受入)

SAP中&#xff0c;请求书照合之后&#xff0c;发现不一致&#xff0c;就会支付保留。 支付保留&#xff0c;可以参考如下文章。 SAP MM学习笔记34 - 请求书照合中的支付保留&#xff08;发票冻结&#xff09;_东京老树根的博客-CSDN博客 即使支付保留之后暂时不付钱&#xff…

外卖跑腿系统开发的最佳实践和成功案例

外卖跑腿系统的开发既涉及技术实现&#xff0c;也需要考虑用户体验、运营策略和合规性。以下是一些最佳实践和一些成功的案例&#xff0c;以帮助您更好地理解这个领域的要点。 1. 技术框架的选择 选择适合的技术框架是外卖跑腿系统成功的关键。您可以考虑使用以下技术&#…

mysql面试题45:读写分离常见方案、哪些中间件可以实现读写分离

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说你知道的读写分离常见方案 读写分离是一种常见的数据库架构方案,旨在分担数据库的读写压力,提高系统的性能和可扩展性。以下是两种常见的…

Nacos 小bug: application.properties配置未生效,导致端口未生效

最近用了下nacos 1.4.6 ,发现windows 中修改配置中的启动端口未生效&#xff0c;其实就是配置文件没读取到。 去github 逛了一下issue ,参考这个&#xff1a;https://github.com/alibaba/nacos/issues/10217 这哥们儿是nacos 1.4.5 Linux系统下的相同问题&#xff0c;shell 中…

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Radio

单选框&#xff0c;提供相应的用户交互选择项。该组件从API Version 8开始支持。无子组件。 一、接口 Radio(options: {value: string, group: string}) 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 参数: 二、属性 除支持通用属性外&#xff0c;还支持以…

更新 | 持续开源迅为RK3568驱动指南第十二篇-GPIO子系统

《iTOP-RK3568开发板驱动开发指南》更新&#xff0c;本次更新内容对应的是驱动&#xff08;第十二期_GPIO子系统-全新升级&#xff09;视频&#xff0c;后续资料会不断更新&#xff0c;不断完善&#xff0c;帮助用户快速入门&#xff0c;大大提升研发速度。 文档教程更新至第十…

基于FPGA的视频接口之千兆网口(四配置)

简介 相信网络上对于FPGA驱动网口的开发板、博客、论坛数不胜数,为何博主需要重新手敲一遍呢,而不是做一个文抄君呢!因为目前博主感觉网络上描述的多为应用层上的开发,非从底层开始说明,本博主的思虑还是按照老规矩,按照硬件、底层、应用等关系,使用三~四篇文章,来详细…

Flutter - 波浪动画和lottie动画的使用

demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新&#xff0c;请前往github查看最新代码 波浪动画三方库wave lottie动画 Lottie 是 Airbnb 开发的一款能够为原生应用添加动画效果的开源工具。具有丰富的动画效果和交互功能。 # 波浪动画 https://pub-web…

家政服务小程序,家政维修系统,专业家政软件开发商;家政服务小程序,家政行业软件开发

家政服务小程序&#xff0c;家政维修系统&#xff0c;专业家政软件开发商&#xff1b; 家政服务小程序&#xff0c;家政行业软件开发解决方案&#xff0c;家政软件经验丰富实践&#xff0c;系统高度集成&#xff0c;提供师傅端、用户端、… 家政服务app开发架构有 1、后台管理端…

用什么工具来画UML?

2023年10月9日&#xff0c;周一晚上 目录 我的决定 关于rational rose UML工具有哪些 相关资料 我的决定 我决定用plantUML、draw.io或starUML就可以了 其实没必要在意工具&#xff0c; 重要的是能把图画出来、把图画好画规范&#xff0c; 重要的是知道怎么去画图、把意…

nnunetv2训练报错 ValueError: mmap length is greater than file size

目录 报错解决办法 报错 笔者在使用 nnunetv2 进行 KiTS19肾脏肿瘤分割实验的训练步骤中 使用 2d 和3d_lowres 训练都没有问题 nnUNetv2_train 40 2d 0nnUNetv2_train 40 3d_lowres 0但是使用 3d_cascade_fullres 和 3d_fullres 训练 nnUNetv2_train 40 3d_cascade_fullres …

如何实现前端缓存管理?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

SQL sever中的视图

目录 一、视图概述&#xff1a; 二、视图好处 三、创建视图 法一&#xff1a; 法二&#xff1a; 四、查看视图信息 五、视图插入数据 六、视图修改数据 七、视图删除数据 八、删除视图 法一&#xff1a; 法二&#xff1a; 一、视图概述&#xff1a; 视图是一种常用…

K8S云计算系列-(4)

K8s Dashboard UI 部署实操 Kubernetes实现的最重要的工作是对Docker容器集群统一的管理和调度&#xff0c;通常使用命令行来操作Kubernetes集群及各个节点&#xff0c;命令行操作非常不方便&#xff0c;如果使用UI界面来可视化操作&#xff0c;会更加方便的管理和维护。如下为…

基于统计学库statsmodel实现时间序列预测

文章目录 1.数据探索与清洗2.假设检验&#xff1a;平稳性检验3.差分处理4.绘制ACF与PACF图像&#xff0c;完成模型选择4.建立ARIMA和SARIMA模型5.解读summary6.确定最终的模型 ARIMA模型在统计学上的三大基本假设&#xff1a; 时间序列具有平稳性&#xff08;stationary&#x…

后厂村路灯在线签名网站,在线签名工具,IPA在线签名

IPA在线签名工具网站&#xff0c;在线实现IPA包签名 案例网站&#xff1a;在线签名 - 后厂村路灯https://sign.vx365.vip/ 用户可以自定义签名网站样式。 用户可以独立部署到自己服务器&#xff0c;使用自己的域名。 用户可以使用自己服务器&#xff0c;加快签名速度&#xf…

clickhouse数据库简介,列式存储

clickhouse数据库简介 1、关于列存储 所说的行式存储和列式存储&#xff0c;指的是底层的存储形式&#xff0c;数据在磁盘上的真实存储&#xff0c;至于暴漏在上层的用户的使用是没有区别的&#xff0c;看到的都是一行一行的表格。 idnameuser_id1闪光10266032轨道物流10265…

Zilliz X Dify.AI ,快速打造知识库 AI 应用

Zilliz 大模型生态矩阵再迎新伙伴&#xff01;近日&#xff0c;Zilliz 和 Dify.AI 达成合作&#xff0c;Zilliz 旗下的产品 Zilliz Cloud、Milvus 与开源 LLMOps 平台 Dify 社区版进行了深度集成。 01.Zilliz Cloud v.s. Dify Dify 作为开源的 LLMs App 技术栈&#xff0c;在此…

LeetCode-94-二叉树的中序遍历

题目描述&#xff1a; 题目链接&#xff1a;LeetCode-94-二叉树的中序遍历 解题思路&#xff1a;递归&#xff0c;具体可以参考 LeetCode-144-二叉树的前序遍历 代码实现&#xff1a; class Solution {List<Integer> listnew ArrayList<>();public List<Integer…