Scala【集合常用方法和函数操作(下)】
Fold、FoldLeft 和 FoldRight
object Test03_Fold {def main(args: Array[String]): Unit = {// 称作集合外的参数val list = List(1,2,3,4)// fold的底层仍然是调用的 foldLeft// 第一个参数是一个值(称作集合内的参数,必须和集合外的参数类型一致)// 第二个参数是一个函数操作opprintln(list.fold(5)(_+_)) //15/*** 5 + 1 = 6* 6 + 2 = 8* 8 + 3 = 11* 11 +4 = 15*/// 这里的集合内参数类型可以和集合外的参数类型不一致println(list.foldLeft(5)(_-_)) //执行过程和上面的 fold 一致// 这里的集合内参数类型可以和集合外的参数类型不一致println(list.foldRight(5)(_-_))/*** 翻转集合list => (4,3,2,1)* 4 - 5 = -1 集合第一个值 4 - 初始值 5 = 结果1* 3 - (-1) = 4 集合第二个值 3 - 结果1 = 结果2* 2 - 4 = -2* 1- (-2) = 3*/}
}
MapValues 和 groupBy
object Test05_MapValues {def main(args: Array[String]): Unit = {val lines = List("hello spark","hello flink","hello flink")val list:Map[String,Int] = lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).mapValues(_.size)for(key <- list.keySet){println("k= " + key + " v= "+list.getOrElse(key, 0))}/*** k= hello v= 3k= spark v= 1k= flink v= 2*/}
}
Aggregate
import scala.collection.mutableobject Test02_Aggregate {def main(args: Array[String]): Unit = {val s = List(1, 2, 3, 4)/*** 需要提供3个参数:* 1.初始值(类型是我们期待返回的类型)* 2.累加器函数:把RDD中的元素合并起来放到累加器进行计算* 3.合并累加器函数: 由于每个节点在本地计算,所以需要合并不同节点累加器的结果* (0,0): 作为s的初始值 (类型是我们期待返回的类型)* (s,r): r是s的某个元素(1,2,3,4)中的一个(并行计算,每次取出的值可能是乱序的,但是结果是相同的)* (s._1 + r,s._2 + 1) => (0+1,0+1) => (1,1)* (s._1 + r,s._2 + 1) => (1+2,1+1) => (3,2)* (s._1 + r,s._2 + 1) => (3+3,2+1) => (6,3)* (s._1 + r,s._2 + 1) => (6+4,3+1) => (10,4)*/val r = s.par.aggregate((0, 0))((s, r) =>(s._1 + r, s._2 + 1),(s,r) => (s._1 + r._1, s._2 + r._2))println(r) // (10,4)val lines = List("hello spark","hello flink","hello flink")var res: mutable.Map[String,Int] = lines.flatMap(_.split(" ")).aggregate((mutable.Map.empty[String,Int]))((countMap:mutable.Map[String,Int],word)=>{if(!countMap.contains(word)){countMap.put(word,1)}else{countMap.put(word,countMap(word)+1)}countMap},(map1:mutable.Map[String,Int], map2:mutable.Map[String,Int])=>{for((word,count)<-map1){if(!map2.contains(word)){map2.put(word,1)}else{map2.put(word,map2(word)+count)}}map2})val keys = res.keySetfor(key <- keys){println("k= " + key + " v= "+res.getOrElse(key, 0))}/*** k= spark v= 1k= flink v= 2k= hello v= 3*/}
}
getOrElse
object Test04_GetOrElse {def main(args: Array[String]): Unit = {/*** getOrElse()主要就是防范措施,如果有值,那就可以得到这个值,如果没有就会得到一个默认值.*/val map: Map[String,Int] = Map("a"->1,"b"->2)println(map.getOrElse("a",0)) // 1println(map.getOrElse("b",0)) // 2println(map.getOrElse("c",3)) // 3}
}
相关文章:
Scala【集合常用方法和函数操作(下)】
Fold、FoldLeft 和 FoldRight object Test03_Fold {def main(args: Array[String]): Unit {// 称作集合外的参数val list List(1,2,3,4)// fold的底层仍然是调用的 foldLeft// 第一个参数是一个值(称作集合内的参数,必须和集合外的参数类型一致)// 第二个参数是一…...
JS加密/解密之那些不为人知的基础逻辑运算符
不多说,直接上干货 使用逻辑非运算符 ! 和双重逻辑非运算符 !!:例如 ![]、!![]、!0、!!0 和 !""、!!""。空字符串的转换:!"" 和 !!""。数组和对象的类型转换:[] []、[] - []、{} [] 和…...
flinksql kafka到mysql累计指标练习
flinksql 累计指标练习 数据流向:kafka ->kafka ->mysql 模拟写数据到kafka topic:wxt中 import com.alibaba.fastjson.JSONObject; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.Produ…...
pdf转jpg的方法【ps和工具方法】
pdf转jpg的方法: 1.photoshop办法: pdf直接拖入ps中,另存为*.Jpg文件即可 另外注意的时候,有时候别人给你pdf文件中包含你需要的jpg文件,千万不要截图进入ps中,直接把文件拖入ps中,这样的文件…...
【已解决】Qt发送信号后,槽函数没有响应
Qt发送信号后,槽函数没有响应 检查有没有连接正确的信号和槽函数,有时候,大意了,会写错检查connect函数返回值,有没有连接成功检查对象的创建方式,确保在信号发送前,以及槽函数接收前ÿ…...
Kafka入门05——基础知识
目录 副本数据同步原理 HW和LEO的更新流程 第一种情况 第二种情况 数据丢失的情况 解决方案 Leader副本的选举过程 日志清除策略和压缩策略 日志清除策略 日志压缩策略 Kafka存储手段 零拷贝(Zero-Copy) 页缓存(Page Cache&…...
WordPress(7)配置邮箱发送功能
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、注册登陆163邮箱1. 配置SMTP二、开启smtp1.添加授权码二.在网站中配置smtp服务1.在主题的Boxmoe主题设置中开启邮箱设置三.安装所需要的插件1.安装完毕开启插件即可四.SMTP邮箱服务测试总结…...
简化路径(C++解法)
题目 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 / 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身࿱…...
CS224W1.1——图机器学习介绍
文章目录 1. 介绍2. 主要问题3. 深度学习如何应用在图结构中4. 课程大纲 学习一下斯坦福CS224W的图机器学习(2021年),并做一下学习笔记,主要是研究方向与图神经网络相关。这次是第一次笔记,图片很多都是从斯坦福的PPT里…...
docker搭建waline评论系统
我这里是给博客网站嵌入评论系统的 1.登录LeanCloud 国际版,没有账号可以注册个 链接:点击跳转 2.新建应用,选择开发版(免费),商用版每个月最低消费5美刀。 3.在设置-应用凭证里面将AppID、AppKey、Maste…...
sql server 生成连续日期和数字
在sqlserver里,可以利用系统表master..spt_values里面存储的连续数字0到2047,结合dateadd()函数生成连续的日期 select convert (varchar(10),dateadd(d, number, getdate()),23) as workday from master..spt_values where type…...
太极v14.0.4 免ROOT用Xposed
一个帮助你免 Root、免解锁免刷机使用 Xposed 模块的 APP 框架。 模块通过它改变系统和应用的行为,既能以传统的 Root/ 刷机方式运作, 也能免 Root/ 免刷机运行;并且它支持 Android 5.0 ~ 11。 简单来说,太极就是个 Xposed 框架…...
python DevOps
在云原生中,python扮演的角色是什么? 在云原生环境中,Python 作为一种高级编程语言,在多个方面扮演着重要角色。云原生是指利用云计算的各种优势(如弹性、可扩展性和自动化),构建和运行应用程序…...
Git(四)底层命令:git对象、树对象、提交对象
目录 一、知识回顾1.1 Linux 基础命令1.2 .git 文件夹解析 二、git 对象(数据对象)2.1 hash-object 存储对象2.2 cat-file 查看对象 三、树对象3.1 ls-files 查看暂存区3.2 update-index 创建暂存区3.3 write-tree 生成树对象3.4 更新暂存区,…...
LVS-DR模式+keepalived+nginx+tomcat实现动静分离、负载均衡、高可用实验
实验条件: test2——20.0.0.20——主服务器——ipvsadm、keepalived服务 test3——20.0.0.30——备服务器——ipvsadm、keepalived服务 nginx5——20.0.0.51——后端真实服务器1(tomcat的代理服务器)——nginx服务 nginx6——20.0.0.61—…...
canvas 状态管理
本文简介 带尬猴,我是德育处主任 canvas 绘图时会根据当前状态来绘制。很多的 canvas 库都利用到这一特性。比如 p5.js 利用了 canvas 状态特性衍生出 push 和 pop 函数实现状态隔离(既然提到了,下一篇就讲这个)。 有兴趣了解 p…...
vue中如何给后端过来的数组中每一个对象加一个新的属性和新的对象(不影响后端的原始数据)
方法: 先看后端的原数据 1、给数组中每一个对象加一个新的属性: 输出查看数组list的值: 2、给数组list加入新的对象: 输出结果: 3、总结: 如果是数组中每个对象新增属性就用map遍历每个对象加入新增的属性…...
SpringAOP源码解析之TargetSource(四)
前言 在Spring框架中,TargetSource是一个接口,用于封装获取目标对象(也就是被代理的对象)的逻辑。它的主要作用是提供代理对象使用的目标对象,并且允许在运行时动态地切换目标对象。TargetSource在Spring的AOP&#x…...
Centos7 安装nvidia显卡驱动
参考一:https://blog.csdn.net/awen19921106/article/details/131331450 参考二:https://www.cnblogs.com/lishanyang/p/17326021.html 报错一: ERROR: Unable to find the kernel source tree for the currently running kernel. Please …...
22 行为型模式-状态模式
1 状态模式介绍 2 状态模式结构 3 状态模式实现 代码示例 //抽象状态接口 public interface State {//声明抽象方法,不同具体状态类可以有不同实现void handle(Context context); }...
【NOIP】1998真题解析 luogu-P1008 三连击 | GESP三、四级以上可练习
NOIP 1998 普及组真题,主要考察枚举算法与数位分离。题目要求将 这些数字进行组合,寻找符合特定比例的三位数。这是一个很经典的暴力枚举题。GESP三、四级以上可练习。题目难度⭐⭐☆☆☆,洛谷难度等级普及−。 luogu-P1008 [NOIP 1998 普…...
如何在10分钟内构建高质量AI语音克隆模型:Retrieval-based-Voice-Conversion-WebUI完全指南
如何在10分钟内构建高质量AI语音克隆模型:Retrieval-based-Voice-Conversion-WebUI完全指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trendi…...
终极指南:10个Browser Compatibility Data在Node.js中的高级应用技巧
终极指南:10个Browser Compatibility Data在Node.js中的高级应用技巧 【免费下载链接】browser-compat-data Browser compatibility data for Web technologies as displayed on MDN 项目地址: https://gitcode.com/gh_mirrors/br/browser-compat-data Brows…...
3个实用方案解决百度网盘限速问题:高效下载工具使用指南
3个实用方案解决百度网盘限速问题:高效下载工具使用指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 百度网盘作为国内主流云存储服务,其资源分享功…...
Agent在供应链场景能降低多少出错率?2026年智能体企业供应链应用深度解析
站在2026年的技术深水区回望,供应链管理已完成从“信息化、自动化”向“智能化、人机共生”的范式转移。在复杂的全球贸易与工业协同背景下,AI Agent(智能体)已正式跨越对话式助手的初级阶段,演进为具备自主执行能力的…...
VMware虚拟机中部署Qwen3智能字幕对齐系统:Windows开发者的Linux环境方案
VMware虚拟机中部署Qwen3智能字幕对齐系统:Windows开发者的Linux环境方案 如果你和我一样,主要用Windows电脑工作,但时不时又需要折腾一下Linux环境来跑AI模型,那今天这个方案可能正合你意。直接在Windows上部署某些依赖复杂的AI…...
**遗传算法在路径优化中的创新应用:从理论到Python实战**在智能优化领域,**遗传算法(Genetic A
遗传算法在路径优化中的创新应用:从理论到Python实战 在智能优化领域,遗传算法(Genetic Algorithm, GA) 凭借其强大的全局搜索能力和对复杂问题的适应性,成为解决组合优化问题的重要工具。本文将深入探讨如何使用 Pyth…...
如何构建现代化博客系统:从Markdown到动态页面的完整指南
如何构建现代化博客系统:从Markdown到动态页面的完整指南 【免费下载链接】skateshop An open source e-commerce skateshop build with everything new in Next.js. 项目地址: https://gitcode.com/gh_mirrors/sk/skateshop 在当今数字化时代,拥…...
Qwen3.5-9B-AWQ-4bit部署教程:双卡RTX 4090 D显存优化与AWQ量化优势解析
Qwen3.5-9B-AWQ-4bit部署教程:双卡RTX 4090 D显存优化与AWQ量化优势解析 1. 模型概述 Qwen3.5-9B-AWQ-4bit是一个支持图像理解的多模态模型,能够结合上传图片与文字提示词,输出中文分析结果。这个模型特别适合处理以下任务: 图…...
宝塔面板PHP8.0如何快速安装Redis缓存扩展_在PHP设置的安装扩展模块中一键配置
宝塔面板PHP 8.0下无法一键安装Redis扩展,因官方源无适配预编译包且构建脚本不兼容ZTS/NTS、phpize路径及头文件要求;须用pecl手动编译redis-5.3.7并正确配置php.ini。宝塔面板 PHP 8.0 下无法通过「安装扩展」一键启用 Redis,是因为官方源里…...
