利用映射算子打印菱形
文章目录
- 一、利用RDD完成
- (一)右半菱形
- (二)左半菱形
- (三)完整菱形
- (四)输出任意大菱形
- 二、利用Java完成
- (一)右半菱形
- (二)左半菱形
- (三)完整菱形
- (四)输出任意大菱形
- 三、利用Scala完成
- (一)右半菱形
- (二)左半菱形
- (三)完整菱形
- (四)输出任意大菱形
- 四、实战总结
- (一)利用RDD完成
- (二)利用Java完成
- (三)利用Scala完成
一、利用RDD完成
(一)右半菱形
val rdd = sc.makeRDD(List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1))
val rdd1 = rdd.map("*" * _)
rdd1.collect.foreach(println)
- 执行代码,查看结果

(二)左半菱形
val rdd = sc.makeRDD(List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1))
val rdd1 = rdd.map(i => " " * (21 - i) + "*" * i)
rdd1.collect.foreach(println)
- 执行代码,查看结果

(三)完整菱形
val rdd = sc.makeRDD(List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1))
val rdd1 = rdd.map(i => " " * ((21 - i) / 2) + "*" * i)
rdd1.collect.foreach(println)

(四)输出任意大菱形
- 由用户确定n值
import scala.collection.mutable.ListBuffer
val list = new ListBuffer[Int]()
val n = 51
(1 to n by 2).foreach(list.append(_))
(n - 2 to 1 by -2).foreach(list.append(_))
val rdd = sc.makeRDD(list)
val rdd1 = rdd.map(i => " " * ((n - i) / 2) + "*" * i)
rdd1.collect.foreach(println)
- 执行代码,查看结果

二、利用Java完成
- 导入所需类

(一)右半菱形
List<Integer> data = Arrays.asList(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
data ==> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1]
data.stream().map(i -> "*".repeat(i)).collect(Collectors.toList()).forEach(System.out::println)
- 执行代码,查看结果

(二)左半菱形
List<Integer> data = Arrays.asList(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
data ==> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1]
data.stream().map(i -> " ".repeat(21 - i) + "*".repeat(i)).collect(Collectors.toList()).forEach(System.out::println)
- 执行代码,查看结果

(三)完整菱形
List<Integer> data = Arrays.asList(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
data ==> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1]
data.stream().map(i -> " ".repeat((21 - i) / 2) + "*".repeat(i)).collect(Collectors.toList()).forEach(System.out::println)
- 执行代码,查看结果

(四)输出任意大菱形
- 由用户确定n
List<Integer> list = new ArrayList<>();
int n = 51;
for (int i = 1; i <= n; i += 2) list.add(i);
for (int i = n - 2; i >= 1; i -= 2) list.add(i);
list.stream().map(i -> " ".repeat((n - i) / 2) + "*".repeat(i)).collect(Collectors.toList()).forEach(System.out::println)
- 执行代码,查看结果

三、利用Scala完成
(一)右半菱形
val list = List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1)
val list1 = list.map("*" * _)
list1.foreach(println)
- 执行代码,查看结果

(二)左半菱形
val list = List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1)
val list1 = list.map(i => " " * (21 - i ) + "*" * i)
list1.foreach(println)
- 执行代码,查看结果

(三)完整菱形
val list = List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1)
val list1 = list.map(i => " " * ((21 - i ) / 2) + "*" * i)
list1.foreach(println)
- 执行代码,查看结果

(四)输出任意大菱形
- 由用户确定n
import scala.collection.mutable.ListBufferval list = new ListBuffer[Int]()
val n = 51
(1 to n by 2).foreach(list.append(_))
(n - 2 to 1 by -2).foreach(list.append(_))
list.map(i => " " * ((n - i) / 2) + "*" * i).foreach(println)
- 执行代码,查看结果

四、实战总结
- 在本次实战中,我们分别使用了RDD、Java和Scala三种方式来生成菱形图案。
(一)利用RDD完成
- 右半菱形:首先创建一个包含奇数的列表,然后使用
map函数将每个元素转换为对应数量的*字符,最后打印出结果。 - 左半菱形:与右半菱形类似,只是在转换时增加了空格字符,使图案向左对齐。
- 完整菱形:结合了左右半菱形的方法,根据元素的位置添加不同数量的空格和
*字符。 - 输出任意大菱形:由用户确定n值,然后生成一个包含奇数和偶数的列表,接着根据列表中的元素生成一个字符串列表,并打印出结果。
(二)利用Java完成
- 右半菱形:与RDD方法类似,只是使用了Java的Stream API进行操作。
- 左半菱形:与RDD方法类似,只是在转换时增加了空格字符,使图案向左对齐。
- 完整菱形:结合了左右半菱形的方法,根据元素的位置添加不同数量的空格和
*字符。 - 输出任意大菱形:由用户确定n值,然后生成一个包含奇数和偶数的列表,接着根据列表中的元素生成一个字符串列表,并打印出结果。
(三)利用Scala完成
- 右半菱形:与RDD方法类似,只是使用了Scala的List进行操作。
- 左半菱形:与RDD方法类似,只是在转换时增加了空格字符,使图案向左对齐。
- 完整菱形:结合了左右半菱形的方法,根据元素的位置添加不同数量的空格和
*字符。 - 输出任意大菱形:由用户确定n值,然后生成一个包含奇数和偶数的列表,接着根据列表中的元素生成一个字符串列表,并打印出结果。
相关文章:
利用映射算子打印菱形
文章目录 一、利用RDD完成(一)右半菱形(二)左半菱形(三)完整菱形(四)输出任意大菱形 二、利用Java完成(一)右半菱形(二)左半菱形&…...
亚信安全正式推出5G专网安全测试服务 圆满完成核电客户5G项目落地
近日,亚信安全联合北京触点互动信息技术有限公司成功完成某核电客户5G专网项目,从终端安全,基站,核心网网元,切片安全以及接口安全等重点存在安全风险点进行测试,发现潜藏的安全隐患漏洞,为客户…...
第二十五章CSS中的技巧(导航栏、下拉列表)
1.CSS精灵 1.什么是CSS精灵 英文叫法 CSS sprites,通常被解释为“CSS图像拼合”或“CSS贴图定位”;其实就是把网页中一些背景图片整合到一张图片文件中,再利用css“background-image”, “background-repeat”,“background-position”的组…...
大话设计模式解读01-简单工厂模式
本系列的文章,来介绍编程中的设计模式,介绍的内容主要为《大话设计模式》的读书笔记,并改用C语言来实现(书中使用的是.NET中的C#),本篇来学习第一章,介绍的设计模式是——简单工厂模式。 1 面向对象编程 …...
35python数据分析numpy基础之setdiff1d求两个数组的差集
1 python数据分析numpy基础之setdiff1d求两个数组的差集 python的numpy库的setdiff1d(x,y)函数,表示数组x与y的差,即在x且不在y中的元素,且进行去重排序。 用法 numpy.setdiff1d(ar1, ar2, assume_uniqueFalse)描述 numpy.setdiff1d(ar1,…...
JVM 指针压缩
运用java内存对齐填充,对java内存进行8字节划分,java对象指针映射到每个划分区域上,使得4个字节(32位)表示2^32个地址,从而使4个字节指针映射32G内存空间。 1.为什么进行指针压缩: jvm从32位变…...
时序预测 | Matlab灰色-马尔科夫预测
目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab灰色-马尔科夫预测 灰色马尔科夫预测(Grey-Markov Prediction)是一种用于时间序列预测的方法,它结合了灰色系统理论和马尔科夫链模型。灰色系统理论是一种非参数化的预测方法…...
代码界的奥斯卡:SpringBoot测试的艺术与科学
探索SpringBoot测试的神秘世界,揭秘如何成为代码质量的守护神!从基础环境搭建到高级集成测试,本系列教程带你一步步构建坚不可摧的测试防线。深入JUnit 5的强大功能,学习如何用MockMvc和Testcontainers打造逼真的测试场景。准备好…...
安防监控视频平台LntonCVS视频监控汇聚平台遏制校园暴力保护校园学生安全应用方案
未成年人被誉为祖国的花朵,是我们国家的未来。然而,最近频繁曝出的未成年霸凌事件却引发了社会的广泛关注。这些事件手段残忍,事态恶劣,引发了全社会对如何保护未成年身心健康、规避霸凌事件发生的深刻思考。 为了更好地保障学生的…...
Python | 平均绩点
字符串的概念和特点 字符串既可以使用单引号,也可以使用双引号""来创建 可以使用运算符来拼接字符串,并返回字符串拼接后的结果。 first_name "Tom" last_name "Jerry" full_name first_name " " &quo…...
2024年有什么值得入手的5G长期套餐大流量卡推荐?大流量手机卡入手指南(超4款正规手机卡实测总结)
前言 24年有什么值得入手的5G大流量卡推荐?大流量手机卡入手指南(超4款正规手机卡实测总结) 四大运营商有哪些大流量卡,可电话,非物联网卡 所有卡激活后,均可以在官方app可查、 所有都是优惠长期 5G大流…...
《尚上优选》项目Bug记录
写在前面 本项目为该系列第二个项目,有一些问题如果没有在本文摘录,可以到 《云尚办公》项目 BUG记录 中查找是否有类似的解决方案。 (2024.3.24以下) (P11) 管理端前端node20版本启动报OpenSSL错误 经典问题,把we…...
Flutter 中的 PopupMenuTheme 小部件:全面指南
Flutter 中的 PopupMenuTheme 小部件:全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架,它允许开发者使用 Dart 语言构建美观、响应式的移动、Web 和桌面应用。Flutter 的 Material 组件库中包含了丰富的 UI 组件,其中 PopupMenuButt…...
uni-app的网络请求库封装及使用(同时支持微信小程序)
其实uni-app中内置的uni.request()已经很强大了,简单且好用。为了让其更好用,同时支持拦截器,支持Promise 写法,特对其进行封装。同时支持H5和小程序环境,更好用啦。文中给出使用示例,可以看到使用变得如此…...
力扣524. 通过删除字母匹配到字典里最长单词
给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。 示…...
【代码随想录】【算法训练营】【第27天】 [39]组合总和 [40] 组合总和II [131]分割回文串
前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day26, 休息的周末~ day 27,周一,库存没了,哭死~ 题目详情 [39] 组合总和 题目描述 39 组合总和 解题思路 前提:组合的子集问题&…...
解决 git 命令 Problem with the SSL CA cert (path? access rights?)
/etc/pki/nssdb 错误 运行命令: GIT_CURL_VERBOSE1 git clone git_repo_url 会输出详细错误信息 Cloning into fp_sdk... * Couldnt find host xxx.com in the .netrc file; using defaults * About to connect() to xxx.com port 443 (#0) * Trying 10.44.52.7…...
详解:重庆耶非凡的选品师项目有哪些优势?
在竞争激烈的电商市场中,重庆耶非凡科技有限公司凭借其独特的选品师项目,成功地在众多企业中脱颖而出。这一项目不仅体现了公司对市场趋势的敏锐洞察力,更彰显了其专业的选品能力和对消费者需求的深刻理解。 首先,耶非凡的选品师项…...
DSP28335模块配置模板系列——GPIO配置模板
在自己的电脑上构建出一套模块配置模板,可以大幅节省DSP程序开发时间,从而达到事半功倍的效果。对于初学者,掌握了模块配置,也就能实现大部分的单片机功能。 在DSP28335模块配置模板系列,不仅会给出GPIO、ADC、EQEP、E…...
【SringBoot项目中MyBatis-Plus多数据源应用实践】
文章目录 前言 一、Mybatis-Plus是什么? 二、多数据源是什么? 三、使用步骤 1. 新建一个SpringBoot项目 2. 引入必要的MyBatis架包 3. 新建两个数据库及两张表 3.3.1 新建数据库:DB_A,并创建一张数据表alarm_kind,以及…...
RexUniNLU开源模型实战:400MB模型在A10/A100/T4不同GPU上的适配
RexUniNLU开源模型实战:400MB模型在A10/A100/T4不同GPU上的适配 1. 引言 你是否遇到过这样的困扰:想要使用强大的自然语言理解模型,但动辄几十GB的大模型让部署变得困难重重?或者你的GPU显存有限,无法运行那些"…...
Qwen3-VL-8B在智能客服场景的应用:让客服真正看懂用户图片
Qwen3-VL-8B在智能客服场景的应用:让客服真正看懂用户图片 1. 智能客服的视觉盲区 你有没有遇到过这样的情况:当用户给客服发送一张商品照片询问"这个配件能用在XX型号上吗?",得到的回复却是"请您提供商品编号&q…...
OpenClaw资源监控:Qwen3-14b_int4_awq任务执行性能分析
OpenClaw资源监控:Qwen3-14b_int4_awq任务执行性能分析 1. 为什么需要关注OpenClaw资源监控 上周我在本地部署了Qwen3-14b_int4_awq模型,准备用OpenClaw实现自动化内容处理工作流。刚开始运行几个简单任务时一切正常,直到尝试处理一个包含2…...
OpenClaw+千问3.5-35B-A3B-FP8:自动化技术文档翻译系统
OpenClaw千问3.5-35B-A3B-FP8:自动化技术文档翻译系统 1. 为什么需要自动化文档翻译 去年参与一个开源项目时,我遇到了多语言文档维护的困境。项目文档需要同步维护中英文版本,每次更新都要经历"写中文→翻译→调整格式→校对"的…...
Verdi波形调试效率翻倍指南:除了拖信号,这些隐藏功能(信号计数、逻辑运算、模拟波形)你用了吗?
Verdi波形调试效率翻倍指南:解锁隐藏的高级功能 在数字验证工程师的日常工作中,Verdi作为业界主流的波形查看工具,其基础功能可能早已被大家所熟悉。但你是否知道,Verdi还隐藏着一系列能大幅提升调试效率的高级功能?本…...
mbed OS USB串口缓冲库:线程安全环形缓冲设计
1. 项目概述buffered-serial0是一个专为 ARM mbed OS 平台设计的轻量级串口缓冲封装库,其核心目标是为 mbed 平台默认的主 USB 虚拟串口(即UART0,在 mbed 中通常映射为Serial pc(USBTX, USBRX))提供可靠、线程安全、零拷贝倾向的底…...
2026年花洒产品推荐:四款热门花洒横评,闭眼入不踩雷
其实选花洒不用盲目追大牌,核心看体验、看品质、看适配性。今天就带来四款热门花洒的深度横评,涵盖瑞尔特、飞利浦、小米米家、九牧四大主流品牌,每款都结合真实使用体验拆解,不罗列参数、不夸大宣传,让每天的沐浴都能…...
3D点云检测实战-Nuscenes数据集解析与Python工具链深度指南
1. Nuscenes数据集全景解析 第一次接触Nuscenes数据集时,我也被它复杂的结构搞得晕头转向。相比KITTI那种"一个txt文件对应一帧数据"的简单结构,Nuscenes采用了基于token的网状索引体系。这种设计虽然初期学习成本较高,但熟悉后会发…...
剧本杀创作指南2025,解析,从零开始打造沉浸式推理体验
剧本杀创作指南2025,解析,从零开始打造沉浸式推理体验剧本杀作为一种新兴的娱乐方式,近年来在国内迅速崛起。随着市场需求的不断增长,越来越多的创作者开始尝试编写剧本杀剧本。本文将为你提供一份详尽的剧本杀创作指南࿰…...
别再只用TF-IDF了!揭秘TextRank与BERT结合的关键词提取新玩法(附Colab实操)
超越TF-IDF:TextRank与BERT融合的关键词提取实战指南 在信息爆炸的时代,快速准确地从海量文本中提取核心关键词已成为NLP工程师的必备技能。传统方法如TF-IDF虽然简单高效,但面对社交媒体短文本、学术论文摘要等复杂场景时,往往力…...
