14章总结

一.lambda表达式

        1.lambda表达式简介

lambda表达式不能独立执行,因此必须实现函数式接口,并且会返回一个函数式接口的对象。

语法:

()->结果表达式
参数->结果表达式
(参数1,参数2,...,参数n)->结果表达式
lambda表达式也可以实现复杂方法,将操作符右侧的结果表达式换成代码块即可。语法:

()->{代码块}
参数->{代码块}
(参数1,参数2,...,参数n)->{代码块}
功能归纳: 

  ()       ->         {代码块}
这个方法  按照         这样的代码来实现
         2.lambda表达式实现函数式接口

(1)函数式接口
指的是仅包含一个抽象方法的接口,接口中的方法简单明了地说明了接口的用途。

interface MyIterface{
void method();
}
        (2)lambda表达式实现无参抽象方法 
很多函数式接口的抽象方法是无参数的。

        (3)lambda表达式实现有参抽象方法
lambda表达式中可以用“(a1,a2,a3)”的方法表示有参抽象方法,圆括号里标识符对应抽象方法的参数。如果抽象方法中只有一个参数,lambda表达式则可以省略圆括号。

4)lambda表达式使用代码块

当函数式接口的抽象方法需要实现复杂逻辑而不是返回一个简单的表达式的话,就需要在lambda表达式中使用代码块。lambda表达式会自动判断返回值类型是否符合抽象方法的定义。

【例14.3】使用lambda表达式为考试成绩分类

结果: 

3.lambda表达式调用外部变量 
        (1)lambda表达式无法更改局部变量
局部变量在lambda表达式中默认定义为final(静态)的,也就是说,lambda表达式只能调用局部变量,却不能改变其值。

        (2)lambda表达式可以更改类成员变量
类成员变量是在lambda表达式中不是被final修饰的,所以lambda表达式可以改变其值。

总结:

1.lambda表达式可以调用并修改类成员变量的值。

2.lambda表达式只是描述了抽象方法是如何实现的,在抽象方法没有被调用前,lambda表达式中的代码并没有被执行,所以运行抽象方法之前类成员变量的值不会发生变化。

3.只要抽象方法被调用,就会执行lambda表达式中的代码,类成员变量的值就会被修改。

二.方法的引用
        1.引用静态方法
语法:

类名::静态方法名
这个语法中出现了一个新的操作符“::”,这是由两个英文冒号组成的操作符,冒号之间没有空格。这个操作符左边表示方法所属的类名,右边是方法名。需要注意的是,这个语法中方法名是没有圆括号的。

        2.引用成员方法
语法:

对象名::成员方法名
与引用静态方法语法不同,这里操作符左侧的必须是一个对象名,而不是类名。这种语法也可以达到抽象方法按照类成员方法逻辑来实现的目的。

【例14.8】使用lambda表达式引用成员方法

代码:

结果: 

 3.引用带泛型的方法
泛型是Java开发经常使用到的功能,“::”操作符支持引用带泛型的方法。除方法外,“::”操作符也支持引用带泛型的类。

        4.引用构造方法
        (1)引用无参构造方法
语法:

类名::new
        (2)引用有参构造方法
例:代码:

结果: 

(3)引用数组构造方法

语法:

类名[]::new

三.流处理

流处理有点类似数据库的SQL语句,可以执行非常复杂的过滤、映射、查找和收集功能,并且代码量很少。

 

【例14.14】创建员工类并按照表14.2创建初始化数据

代码:

1.数据过滤
filter()方法:是Stream接口提供的过滤方法。该方法可以将lambda表达式作为参数,然后按照lambda表达式的逻辑过滤流中的元素。过滤出想要的流元素后,还需使用Stream提供的cllect()方法按照指定方法重新封装。

limit()方法:是Stream接口提供的方法,该方法可以获取流中前N个元素。

【例】找出年龄大于30的员工并限制条数
代码:

结果: 

2.数据收集 
数据统计:不仅可以筛选出特殊元素,还可以对元素的属性进行统计计算,由Collectors收集器实现。

数据分组:就是将流中元素按照指定的条件分开保存,类似SQL语言中的“GROUP BY”关键字。

Collectors类提供的groupingBy()方法就是用来进行分组的方法。

【例14.28】将所有员工按照部门分组
代码:        

结果:

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

老鹰目标检测数据集VOC格式60张

老鹰是天空中的王者,它们拥有极佳的飞行能力。它们能以惊人的速度在天空中翱翔,尤其擅长高空俯冲捕食。老鹰的视力非常敏锐,能够准确地发现地面上的猎物,并迅速下落抓取。它们的爪子强而有力,足以击倒比自己体型庞大的…

顶级旗舰ET9出道,蔚来还是那个「最不计成本」的中国车品牌

作者 |张祥威 编辑 |德新 2008年,李斌和新浪的曹国伟几人一起喝酒,发了第一条微博,「天冷带围巾,心冷发微博」,一晚上涨了2000多个粉丝,他偶尔还会针砭时事,很快积累了最早一波粉丝。 创立蔚来…

各种边缘检测算子的比较研究

边缘检测算子比较研究 文章目录 边缘检测算子比较研究一、引言1.1 边缘检测的重要性1.2 研究背景与意义1.3 研究目的和论文结构 二、文献综述2.1 边缘检测概述2.2 Roberts、Prewitt、Sobel、Laplacian 和 Canny 算子的理论基础和历史2.2.1 **Roberts算子:**2.2.2 **…

全部没有问题 (一.5)

java mooc练习 基础练习: 进阶练习: final 赋值一次 局部 必须赋值 抽象类 多态测试 package com.book;public class moocDraft1 {static int variable1;public void fatherMethod(moocDraft1 a){System.out.println(variable);}public static void…

leetcode——背包问题汇总

本章来汇总一下leetcode中做过的背包问题,包括0-1背包和完全背包。 背包问题的通常形式为:有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。求解将哪些物品装入背包里物品价值总和最大。0-1背包和…

1981-2020年全国各省银行金融机构分布数据、银行金融机构数据

1981-2020年全国各省银行金融机构分布数据/银行金融机构数据 1、时间:1981-2020年 2、指标:统计年度、地区代码、地区名称、金融机构分类代码、金融机构分类名称、营业网点机构个数、营业网点就业人数、营业网点资产总额、法人机构数目、每万人拥有的网…

嵌入式软件工程师常用的

最近我换工作了,看见不同嵌入式软件工程师用的平台都不一样,所以我整理了一下。 PlatformIO: 多平台支持: PlatformIO支持多种嵌入式平台,包括Arduino、ESP8266、ESP32、STM32等,通过一致的开发接口实现平台无关性。 内…

使用ClickHouse UDF与OpenAI模型集成

本文字数:14683;估计阅读时间:37 分钟 作者:Dale McDiarmid 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 Meetup活动 ClickHouse Shenzhen User Group第1届 Meetup 火热报名中&#x…

计算机提示找不到vcruntime140.dll,无法继续执行代码怎么办?如何修复

“找不到vcruntime140.dll,无法继续执行代码”。这个问题可能会让你感到困惑,不知道如何解决。那么,vcruntime140.dll是什么文件?它为什么会丢失?又该如何解决这个问题呢?本文将为你详细介绍vcruntime140.d…

教师未来前景发展

教师是一个光荣而重要的职业,他们承担着培养下一代的责任和使命。随着社会的不断发展和变化,教师的前景也在不断扩大和改变。本文将探讨教师未来的前景发展,并提供一些思考和建议。 首先,教师的就业前景将继续扩大。随着人口的增长…

自定义Springboot项目启动横幅⭐️ 附平平淡淡的周末日常

2023/12/24 天气晴 温度适宜 一觉睡到九点半,谁是神仙,我是神仙日常三联,喂鸡,刷博,肝任务今阳光甚好,遂寻吾之莆田,翻其面,光得以入之,余卧炕&#xff0…

单片机原理及应用

一、任务说明 1.主要任务 本实践环节“51单片机商用电子计价秤设计”要求收集市场电子秤的应用场景的功能列表,给出本系统各功能的参数范围,分析质量检测功能的实现方法,设计单片机仿真系统并通过Proteus进行测试,电子秤是利用物…

注意:国内发生多起Oracle 勒索病毒!

摘要:近期,国内发生多起针对Oracle 数据库的勒索病毒案例,通过分析,该勒索病毒通过网络流传的“PL/SQLDeveloper破解版”进行传播。 1.病毒发起的原因及问题现象 近期,国内发生多起针对Oracle 数据库的勒索病毒案例&…

池化层(pooling)

目录 一、池化层 1、最大池化层 2、平均池化层 3、总结 二、代码实现 1、最大池化与平均池化 2、填充和步幅(padding和strides) 3、多个通道 4、总结 一、池化层 1、最大池化层 2、平均池化层 3、总结 池化层返回窗口中最大或平均值环节卷积层对位置的敏感性同样有窗口…

每日一题——LeetCode888

方法一 个人方法: 交换后要达到相同的数量,那么意味着这个相同的数量就是两个人总数的平均值,假设A总共有4个,B总共有8个,那么最后两个人都要达到6个,如果A的第一盒糖果只有1个,那么B就要给出6…

祝福各位CSDN的小伙伴圣诞快乐

1.源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>圣诞树&#x1f384;</title><link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/n…

分布式事务2PC二阶段提交详解

文章目录 概述和概念执行过程和工作流程特点优劣势应用场景总结demo代码样例 概述和概念 二阶段提交&#xff08;2PC&#xff09;是一种用于确保在分布式系统中的所有节点在进行事务提交时保持一致性的算法 二阶段提交&#xff08;Two-Phase Commit&#xff0c;2PC&#xff09…

身为Java“搬砖”程序员,你掌握了多线程吗?

摘要&#xff1a;互联网的每一个角落&#xff0c;无论是大型电商平台的秒杀活动&#xff0c;社交平台的实时消息推送&#xff0c;还是在线视频平台的流量洪峰&#xff0c;背后都离不开多线程技术的支持。在数字化转型的过程中&#xff0c;高并发、高性能是衡量系统性能的核心指…

做到这两条,破解35岁中年危机

最近我在看吴军老师的《富足》这本书&#xff0c;其中有一篇文章讲的是如何破解35岁中年危机&#xff0c;我觉得讲清楚了这个问题的本质&#xff0c;我在这里分享给你&#xff0c;以下内容大部分摘抄自《破解35岁中年危机》一章。 35岁中年危机的原因 35岁中年危机的说法好像…

Navicat for mysql备份与恢复

文章目录 一、Navicat for mysql备份1.打开navicat&#xff0c;找到备份2.点击新建备份&#xff0c;直接点备份3.备份完成 二、恢复数据1.删除表2.点击备份&#xff0c;选中备份文件&#xff0c;点击还原备份3.还原完成 三、其他命令四、视频演示总结 一、Navicat for mysql备份…