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】将所有员工按照部门分组
代码:        

结果:

 

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

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

相关文章

一个最简单的Makefile例子(转)

原文地址&#xff1a;http://hi.baidu.com/hellosim/blog/item/42e78341b40c3e8db2b7dce3.html 转载请注明出处 1.hello.c #include <stdio.h> int main() { printf("Hello World!\n"); return 0; } 2.Makefile hello : hello.o cc -o hello h…

python基础知识资料包-Python基础知识总结——史上最全系列

一、数据类型 1、可变数据类型 a.列表(list) 列表的系列函数&#xff1a; ①append():元素的追加&#xff0c;在列表的末尾添加新的值 列表名.append(新增的值) ②insert(下标&#xff0c;值)&#xff1a;在指定下标插入指定的值 列表名.insert(下标&#xff0c;值) ③count(值…

提高速度 - MyEclipse配置

http://jingyan.baidu.com/article/f3ad7d0fddec3b09c3345ba6.html 转载于:https://www.cnblogs.com/7q4w1e/p/9706376.html

暗时间(普通的一种时间概念)

收藏18354暗时间&#xff08;普通的一种时间概念&#xff09;编辑 暗时间简单的说就是思维的时间&#xff0c;也就是没有产生直接成果的时间。一个人走路、买菜、洗脸洗手、坐公车、逛街、出游、吃饭、睡觉&#xff0c;所有这些时间都可以成为“暗时间”&#xff0c;你可以充分…

ZOJ 1586 QS Network

题目链接 QS NetworkTime Limit: 2 Seconds Memory Limit: 65536 KBSunny Cup 2003 - Preliminary Round April 20th, 12:00 - 17:00 Problem E: QS Network In the planet w-503 of galaxy cgb, there is a kind of intelligent creature named QS. QScommunicate with e…

javaone_JavaOne 2012:101种改进Java的方法-开发人员参与为何如此重要

javaoneBruno Souza &#xff0c; Martijn Verburg和Heather Vancura在希尔顿酒店的美国大陆宴会厅4中展示了“ 101种改善Java的方法&#xff1a;开发人员为何如此重要”。 他们将其分为自己最熟悉的领域。 SouJava的创始人兼协调员 Souza谈到了通过用户组的更大参与。 Verberg…

谷歌浏览器flash_谷歌浏览器不支持Flash Player的问题

更新2020.6.10&#xff0c;这个答案更新过方式1&#xff1a;老版谷歌chrome浏览器里输入&#xff1a;chrome://flags/#run-all-flash-in-allow-mode进行设定。方式2&#xff1a;新版谷歌68&#xff0c;69以上版本&#xff0c;chrome浏览器操作方式&#xff1a;新版不再允许保存…

深入理解python之self

首先明确的是self只有在类的方法中才会有&#xff0c;独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的&#xff0c;虽然在调用时不必传入相应的参数。 self名称不是必须的&#xff0c;在python中self不是关键词&#xff0c;你可以定义成a或b或其它名字都可以…

Oracle12c异常关闭后启动PDBORCL(ORA-01033)

这个问题已经困扰了我好几天找解决方案&#xff0c;终于找到&#xff1a; 由于Oracle12c的特殊性&#xff0c;但许多用户并不想在创建用户时前面要加"C##" 那么就要创建PDBORCL数据库&#xff0c;来与Oracle以前的版本保持一致(如Oracle 11g) 可能由于断电或者异常关…

带有Spring Cloud Microservices的JSON Web令牌

在Keyhole&#xff0c;我们已经发布了几个有关微服务的博客 。 我们已经讨论了微服务环境中使用的架构模式&#xff0c;例如服务发现和断路器 。 我们甚至在平台和工具上发布了博客&#xff0c;例如最近关于Service Fabric的博客 。 我们已经介绍过的架构的重要组成部分是围绕…

STC用PCA测量脉宽_教你测量玉手镯圈号及如何轻松快速摘戴玉手镯?

一、如何测量玉手镯的圈号&#xff1f;测量和田玉手镯的圈号并不复杂&#xff0c;自己在家就能轻松搞定哦&#xff01;共有两种方法可选。方法一&#xff1a;游标卡尺法所需工具&#xff1a;游标卡尺具体方法&#xff1a;如照片所示&#xff0c;使用游标卡尺测量手掌最宽处(大拇…

Python中的函数(一)

接触过C语言的朋友对函数这个词肯定非常熟悉&#xff0c;无论在哪门编程语言当中&#xff0c;函数&#xff08;当然在某些语言里称作方法&#xff0c;意义是相同的&#xff09;都扮演着至关重要的角色。今天就来了解一下Python中的函数用法。 一.函数的定义 在某些编程语言当中…

Shell基础命令

它又是一种程序设计语言。作为命令语言&#xff0c;它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令&#xff1b;作为程序设计语言&#xff0c;它定义了各种变量和参数&#xff0c;并提供了许多在高级语言中才具有的控制结构&#xff0c;包括循…

电脑报警5声_电脑故障怎么判断 常见电脑故障诊断方法介绍【详解】

在电脑使用的过程&#xff0c;出现一些电脑故障是在所难免的&#xff0c;很多小伙伴对一些常见电脑故障诊断的方法不是很了解&#xff0c;不知道自己电脑出现的这些故障 究竟是什么原因造成的 。关于软件故障有很多种可能性&#xff0c;一般都是比较容易解决的&#xff0c;今天…

洛谷P3857 [TJOI2008]彩灯(线性基)

传送门 线性基裸题 直接把所有的状态都带进去建一个线性基 然后答案就是$2^{cnt}$&#xff08;$cnt$代表线性基里数的个数&#xff09; 1 //minamoto2 #include<cstdio>3 #include<cstring>4 #define ll long long5 const int N55;6 ll b[N],a[N];int n,m,cnt;char…

sort函数

sort函数:#include <algorithm>,默认从小到大&#xff0c;如果降序可写第三方函数进行排序&#xff0c;EXP:sort(array,arrayn,cmp) 1.普通排序,升序 01#include <iostream> 02#include <algorithm> 03using namespace std; 04int main() 05{ 06 int a[10]{…

javaone_JavaOne 2012:非阻塞数据结构如何工作?

javaone当我查看今天的日程安排时&#xff0c;我感到有些惊讶&#xff0c;并指出我目前计划今天参加的所有会议都在希尔顿举行。 当我意识到JavaOne演示文稿中大约有一半是在希尔顿酒店中并且似乎按路线大致定位时&#xff0c;这变得有些不足为奇了。 Tobias Lindaaker &#x…

台式电脑键盘字母乱了_电脑键盘上的一个不起眼的按键,特别实用却被粗心的人忽略...

笔记本电脑与台式电脑的键盘有一个小小的区别。笔记本电脑没有输入数字的小键盘&#xff0c;而台式电脑键盘有&#xff1b;笔记本电脑键盘有一个Fn键&#xff0c;而台式电脑键盘没有。正是笔记本电脑键盘有了这个Fn键&#xff0c;为我们使用者提供了许多特别实用的功能&#xf…

ubuntu下crontab启动,重启,关闭命令

启动&#xff1a;/etc/init.d/cron start ( service cron start )重启&#xff1a;/etc/init.d/cron restart ( service cron restart )关闭&#xff1a;/etc/init.d/cron stop ( service cron stop )转载于:https://www.cnblogs.com/yu-yuan/p/9722202.html

NET Framework 4.0 安装失败:安装时发生严重错误

NET Framework 4.0 安装失败&#xff1a;安装时发生严重错误 看日志&#xff0c;好像是缺少系统组件。不知道你的系统是怎么装的&#xff0c;有耐心的话&#xff0c;请用系统盘执行Windows的默认方式安装。即常说的硬装&#xff0c;不要用网上常用的ghost方式安装。执行完硬装后…