搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
从前慢现在也慢
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Spark 之 org.apache.spark.network.util.JavaUtils
2
WireShark抓包使用方法_wireshark4 使用教程
3
Android: INSTALL_FAILED_UPDATE_INCOMPATIBLE错误解决措施_install_failed_update_incompatible: package com.mo
4
云原生之深入解析分布式存储系统Ceph的环境部署和实战操作_ceph 应用场景
5
Chapter4 Pytorch数据处理与可视化(Dataset、DataLoader、tensorboard、torchvision)_datasets、runs、utils
6
Gradle笔记 七 publishing 项目发布_gradle publishing
7
VC编译openCV和FFmpeg_编译opencv需要的ffmpeg文件
8
SQL语言快速入门_spl 快速入门
9
鸿蒙AIcamera,用鸿蒙AI Camera玩2048效果如何?
10
AspectJ入门(一)
当前位置:
article
> 正文
Java8函数式编程一览_java8 函数式编程
作者:从前慢现在也慢 | 2024-03-22 17:36:21
赞
踩
java8 函数式编程
一、为什么需要了解
函数式编程
Java诞生以来变化最大的一个版本
计算机体系结构变化:多核(计算集群)
业务场景变化:处理大型数据集(大数据)
面向软件工程师更友好
Spring5开始大量使用Java8新特性
Java8提供的新特性
函数式编程:Lambda,流,默认方法(这篇重点介绍的)
新的时间和日期API
新的NPE解决方案Optional
CompletableFuture异步计算
。。。
二、函数式编程
就是使用函数进行编程
使用无副作用的函数
不修改内嵌类的状态
不修改其他对象的状态
返回所有计算结果
行为参数化——函数式编程成为可能
Lambda——匿名函数
匿名函数:没有名称,有参数列表、函数主体、返回类型
Lambda表达式构成:表达式写法和语句写法
合法的Lambda表达式
- 不
不合法的Lambda表达式(IntelliJ编译器给出提示)
函数式接口
默认方法——避免逻辑灾难
default
没有显式声明方法的具体实现,就自动继承默认实现
平滑进行接口优化与演进
抽象公共行为,保持代码的可复用性与功能聚焦
一个类只能继承一个抽象类,但可以实现多个接口
抽象类可以实例化保存通用状态,接口则不能有实例变量
函数描述符
函数式接口的抽象方法
Predicate的函数描述符:T -> boolean
Lambda表达式允许用内联的形式为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例
Lambda表达式的签名要和相应函数式接口的抽象方法签名一致
原始类型特化——减少拆装箱的性能损耗
泛型只能绑定到引用类型
自动装箱会把原始类型包裹重新在堆上分配内存
Java8提供的函数式接口及应用举例
自定义函数式接口
方法引用——Lambda的语法糖
三、函数式数据处理
函数式数据处理
从如何做到要做什么
流——像使用SQL一样处理数据
从支持数据处理操作的源生成的元素序列
可声明——说明想要完成什么而不是如何实现
可复合——流水线工作
可并行——充分利用多核性能
流与集合的比较
集合是内存中的数据结构,包含所有值——DVD
流是按需计算,延迟创建的集合——在线视频 (但只能遍历一次)
流操作与使用
中间操作,除了流水线执行中断操作否则不会执行任何处理,屏蔽掉了外部迭代过程
终端操作,结果是任何不是流的值
常用流API
谨慎使用并行流——天下没有免费的午餐
parallel方法及ForkJoinTask框架
limit和findFirst等并行流不一定比顺序流快
少量元素的并行额外开销
数据结构是否容易拆分进行流计算
重构与调试
命令式代码到函数式代码
1.行为描述
2.使用匿名内部类
3.行为参数化,使用Lambda表达式
4.使用静态方法简化Lambda
5.使用方法引用进一步简化
6.复合Lambda
调试Lambda
四、注意事项
默认方法冲突——显式解决
类实现了多个接口,并且存在相同签名的默认方法
FatherClassName.super.defaultMethod(),最好显式解决
明确Lambda表达式的操作含义
下面三条语句分别会打印什么?
避免共享可变状态——对输出结果负责
取n = 10000,会得到想要的结果嘛?
每一次的计算结果都不一样!
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/289809
推荐阅读
article
DataGuard
physical
standby
创建与维护_
remote
archive
进程...
首先介绍一些概念
physical
standby
database ,即直接从主库接受
archive
dlog然后做基于...
赞
踩
article
记录:
Flutter
Listview
纵向/横向
列表
_
flutter
listview
方向...
数据:var city
_
name = [ "广州", "深圳", "北京", "上海", "杭州", "天津", "重庆...
赞
踩
article
使用
Python
进行
机器
学习
简介_
以
python
为
编程
程序
,设计开发
一个
应用
机器
学习
技术在生产和生活...
机器
学习
是一种人工智能(AI),它
为
计算机提供了
学习
的能力,而无需明确编程。
机器
学习
侧重于计算机
程序
的开发,这些
程序
...
赞
踩
article
鸿蒙
三方
库
推荐
MQTT
【坚果派】
_
@
ohos
/
mqtt
...
使应用程序能够连接到
MQTT
代理以发布消息、订阅主题和接收发布的消息。
_
@
ohos
/
mqtt
@
ohos
/
mqtt
...
赞
踩
article
基于
SSM
的
家庭理财
系统
的
设计与实现...
文档开发技术文档、参考LW、答辩PPT,部分项目另有其他文档开发环境eclipse/idea丨navicat12丨mys...
赞
踩
article
flutter
——四张
图片
点击
对应
的
照片就进入
对应
单张
图片
_
flutter
图片
点击
...
难点:pagecontroller
的
使用。
_
flutter
图片
点击
flutter
图片
点击
...
赞
踩
article
座位
预约
小
程序
|基于
微信
小
程序
的
图书馆
自习室
座位
预约
管理
系统
设计
与实现(源码+数据库+文档)_基于微...
图书馆
已经不是,也不可能是 传统观念的
图书馆
,而将成为社会公用信息,本
系统
包含了2个学生,即管理员和学生。管理员权限主要...
赞
踩
article
Android
系统
api
实现
定位
及使用
百度
提供的
api
来实现
定位
_
api
快速
定位
controlle...
目前在国内使用
定位
的方法主要是 1.
Android
系统提供的 LocationManager locationMana...
赞
踩
article
[
广告
]根据
广告
权重
展示
广告
次数的
算法
...
前言
广告
商给
广告
平台提供方投放
广告
广告
平台提供方根据
广告
商投放的资金确定各个
广告
的
权重
广告
平台提供方再根据
权重
投放
广告
广...
赞
踩
article
2024年
Java
程序员
必读书单_
java
设计模式
相关
书籍
...
"探索
程序员
进阶之路,从
Java
到人工智能,这些必读
书籍
引领您走向技术巅峰。解锁编程之道,把握未来趋势。"_
java
设计...
赞
踩
article
安装
Python
3.6
在Ubuntu 16.04 LTS
版本
...
在ubuntu 16.04
版本
中,系统默认
安装
了python 2.7和3.5
版本
,因为系统本身用到python的程序,...
赞
踩
article
tiktok
对
苹果
手机
版本
要求,
苹果
安装
TikTok
最新教程_
tiktok
ios
版本
要求...
第三步:使用你的美区 Apple ID 登录,务必从 App Store 登录,千万不要从设置中的 iCloud 登录,...
赞
踩
article
笔记·
模拟
电子
技术
基础
——
郑益慧
老师_
模拟
电子
技术
郑益慧
...
本文主要记录学习过程中对于郑老师讲课内容的笔记以及思考。_
模拟
电子
技术
郑益慧
模拟
电子
技术
郑益慧
...
赞
踩
article
mfc
选项卡
式
文档
_如何将
选项卡
式
文档
添加到
Microsoft
Word
...
mfc
选项卡
式
文档
Would you like to be able to switch between your Wo...
赞
踩
article
chatgpt
_
chat3.5
免费版
登录入口...
最近在玩这个发现,chatGPT3 和 3.5 浏览器地址是有差异的。{“role”:“user”,“content”:...
赞
踩
article
Andro
id
studio
导入项目报错:Plugin with
id
‘
com
.
andro
id
....
今天导入朋友的 Demo 报错,Demo 是用 AS 4.X 版本,我本地是 3.X 版本, 项目结构有差异,大同小异,...
赞
踩
article
常见
大
数据
面试题
汇总带答案...
大
数据
常见
面试题
_
大
数据
面试
大
数据
面试
大
数据
面试题
汇总 r...
赞
踩
article
HarmonyOS
怎样
打印
log
/
日志
的
打印
...
HarmonyOS
怎样
打印
log
HarmonyOS
提供了HiLog
日志
系统,所以我们可以使用HiLog 来
打印
日志
从H...
赞
踩
article
MySQL
安装和配置与
Maven
_
mysql
maven
...
文章目录
MySQL
安装和配置
MySQL
简介安装配置环境变量查看版本信息命令行连接
MySQL
手动开启/关闭
MySQL
使用...
赞
踩
article
Visual
Studio
2008
每日提示(一)_vs
拖动
选项卡
是
出现十字标志吗...
Visual
Studio
2008
每日提示(tip of day )
是
2007年7月Sara Ford在她的博客里推...
赞
踩
相关标签
database
archive
数据库
system
service
server
flutter
java
机器学习
华为
OpenHarmony
HarmonyOS
ArkTS
小程序
图书馆预约小程序
图书馆座位预约小程序
微信小程序
uni-app
毕设
android
百度
定位
API
demo